我们将CircleCI用于一个项目,其默认执行类型为docker
。这意味着开始的每个CI作业都会启动一个新的Docker容器,并且构建将在该容器内 运行。
此CI容器具有以下文件:
docker-compose.yml
sql-setup.sql
此docker-compose.yml
文件启动一个MySQL映像,并使用volumes
在其中复制SQL脚本,以便在启动时准备就绪,例如:
mysql:
image: mysql:8.0.18
...
volumes:
- ./sql-setup.sql:/docker-entrypoint-initdb.d/sql-setup.sql
(在本地开发人员计算机上工作。)
问题是,在CI上运行时,“父” CI容器中的docker-compose up
使用以下项创建了“子/兄弟”容器:
drwxr-xr-x 2 root root 40 Jul 8 17:26 sql-setup.sql
注意这是一个目录!
我的调试表明这是因为主机上不存在./sql-setup.sql
。 (仅在在主机上运行 的CI容器上。)
我的问题:我如何配置docker-compose.yml
(或CircleCI配置),以便正确复制CI容器(运行docker-compose up
)中的文件放入生成的mysql
组成容器中?
答案 0 :(得分:-1)
使用machine
执行程序代替docker
执行程序可以解决此问题
参考:https://discuss.circleci.com/t/copying-files-to-docker-compose-container/12837