我有2个泊坞容器。一个运行tomcat,另一个运行mysql。我想将.sql
文件复制到已存在的" docker-entrypoint-initdb.d" mysql容器的文件夹。
我在Dockerfile中使用了以下命令:
COPY test.sql /docker-entrypoint-initdb.d
两个容器启动后,我看到了文件夹" docker-entrypoint-initdb.d"在我的tomcat容器中创建,并将test.sql
复制到其中。
该文件不会被复制到我需要的位置。 test.sql
没有复制到mysql容器中。
我该怎么办?
搬运工-compose.xml:
version: "2"
services:
db:
image: mysql
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD="true"
myapp:
build: ./myapp
ports:
- 8080:8080
- 3306:3306
答案 0 :(得分:3)
使用Dockerfile为数据库容器构建自己的映像,如下所示:
FROM mysql
COPY test.sql /docker-entrypoint-initdb.d
答案 1 :(得分:2)
您正在构建Mysql
容器,但在那里使用tomcat
图像,这就是文件复制到docker cp
容器的原因。
当容器启动时,您可以手动version: "2"
services:
db:
image: mysql
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD="true"
volumes:
- /my/own/datadir:/var/lib/mysql
myapp:
build: ./myapp
ports:
- 8080:8080
- 3306:3306
文件到所需位置。
如果你想在启动时让数据库可用于容器,我建议你使用一个带有挂载本地文件系统的虚容器。然后在该容器中手动还原数据库。然后删除容器并修改dockerfile,如下所示:
dockerfile
另一种方法是使用以下FROM mysql
COPY test.sql /docker-entrypoint-initdb.d
:
{{1}}
答案 2 :(得分:2)
tomcat容器是通过docker文件构建的,其中mysql容器(db)是通过docker映像名称" mysql"构建的。
您可以将当前文件夹(主机)的卷安装到" /docker-entrypoint-initdb.d"在容器内。
new docker-compose.yml将如下所示。
version: "2"
services:
db:
image: mysql
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD="true"
volumes:
- .:/docker-entrypoint-initdb.d
myapp:
build: ./myapp
ports:
- 8080:8080
- 3306:3306