【问题标题】:Mounting volume from CI container into docker-compose container将 CI 容器中的卷挂载到 docker-compose 容器中
【发布时间】: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


    【解决方案1】:

    使用machine executor 而不是docker executor 可以解决这个问题

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

    【讨论】:

    • 从链接中添加主要描述总是好的。该链接将来无法访问。
    猜你喜欢
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    • 2017-04-15
    • 1970-01-01
    • 2021-10-17
    相关资源
    最近更新 更多