我们在项目中使用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组合容器中?
发布于 2020-07-26 14:34:35
使用machine执行器代替docker执行器解决了这一问题。
参考文献:https://discuss.circleci.com/t/copying-files-to-docker-compose-container/12837
https://stackoverflow.com/questions/62816263
复制相似问题