我有一个名为 Test
文件夹中的文件如下--
测试
-测试\u 002.sql
-dockerfile文件
-docker-compose.yml公司
内容 Dockerfile
具体如下——
FROM mysql:5.6.40
COPY . /Test
的内容 docker-compose.yml
如下所示-
version: '3'
services:
test_db:
build: .
image: test_env
container_name: test_env
tty: true
volumes:
- .:/Test
environment:
MYSQL_DATABASE: 'test_db'
MYSQL_ROOT_PASSWORD: 'test_root_pwd'
MYSQL_PASSWORD: 'test_pwd'
MYSQL_USER: 'root'
现在,我将解释我所做的一系列步骤
第一步:
docker-compose up --build
这已经创建了一个新的docker容器,它正在运行
第二步:
然后,我进了码头集装箱 docker exec -it <container-ID> bash
第三步:
在docker容器中,我有mysql转储文件 test_002.sql
在 Test
文件夹。我加载mysql转储为 mysql -uroot -ptest_root_pwd test_db < Test/test_002.sql
. 然后将所有表和测试数据加载到测试数据库中。
step3\u check:检查step3是否将mysql dump测试数据加载到空数据库中(在步骤1中执行docker compose up时创建)--
mysql -uroot -psecret
use test_db;
show tables;
我能看到里面所有的table test_db
每个表中的测试数据来自mysql转储文件( test_002.sql
). 到现在为止,一直都还不错。
步骤4:现在我想创建一个新的映像,将表和测试数据加载到test\ udb中。所以我做了 docker container commit <container-ID> <Image:Tag>
. 这创建了一个新的图像(应该包含 test_db
所有表格和测试数据)
步骤5:我推送新创建的docker图像 Image:Tag
到dockerhub。
第六步:我从另一台机器上提取了这个docker图像 Image:Tag
并根据新提取的图像运行了一个docker容器 docker run Image:Tag
. 然后创建一个新的docker容器并像步骤1一样运行
第7步:在第6步中新创建的docker容器中,我执行了以下操作--
mysql -uroot -psecret
use test_db;
show tables;
结果是 Empty set (0.00 sec)
.
所有的表格和测试数据都在哪里?我想我加载到test\ db中,并使用 docker commit
. 显然,在我推送到docker hub的docker映像中没有测试数据。
你知道为什么会发生这种情况吗?或者你对如何让test\u db加载测试数据并将其冻结为docker映像并从任何其他机器上提取它有什么建议吗
换句话说,如果我拉 Image:Tag
在docker hub中,从该映像创建的所有容器都应具有名为“test\u db”的mysql数据库,并加载所有表和测试数据。
谢谢,
暂无答案!
目前还没有任何答案,快来回答吧!