将卷从CI容器安装到docker-compose容器中

时间:2020-07-09 13:41:33

标签: docker docker-compose continuous-integration circleci docker-volume

我们将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组成容器中?

1 个答案:

答案 0 :(得分:-1)

使用machine执行程序代替docker执行程序可以解决此问题

参考:https://discuss.circleci.com/t/copying-files-to-docker-compose-container/12837