【发布时间】:2020-07-09 13:41:33
【问题描述】:
我们将 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)中的文件正确复制到生成的 @ 987654331@撰写容器?
【问题讨论】:
标签: docker docker-compose continuous-integration circleci docker-volume