【问题标题】:Adding a tag to all images in a docker-compose file?为 docker-compose 文件中的所有图像添加标签?
【发布时间】:2021-12-18 20:14:42
【问题描述】:

对于我所有的图像,我都有一个用于生产的latest 标签,以及一个用于测试的test。我还有 2 个 docker-compose 文件,它们的不同之处在于一个在所有包(nginx 除外)上使用 latest,而另一个使用 test。有没有办法通过 CLI 变量进行设置,这样我就不必一直手动保持这两个文件同步?

【问题讨论】:

    标签: docker docker-compose


    【解决方案1】:

    我们可以通过环境变量来处理这个问题。

    docker-compose.yml:

    services:
      ...
      my-service-one:
        image: my/service-one:$TAG
        ...
      my-service-two:
        image: my/service-two:$TAG
        ...
    

    然后我们可以添加带有内容的.env file(用于生产)

    TAG=latest
    

    和一个带有内容的test.env 文件(用于测试)

    TAG=test
    

    当我们运行docker compose up时,默认使用文件.env。如果我们想开始我们的测试部署,我们可以运行docker compose --env-file test.env up

    【讨论】:

    • 不错!有没有办法设置没有 .env 文件时发生的默认值?
    • .env 文件是默认文件。
    • @DottyPhone 如果我得到你真正想要的是${VARIABLE:-default},否则你可以参考这个文档link
    【解决方案2】:

    您可以简单地为每个撰写文件运行这些命令

    TAG=latest docker-compose -p latestapp -f compose-for-latest.yaml up -d
    

    TAG=test docker-compose -p testapp -f compose-for-test.yaml up -d
    

    当然,不要忘记使用${TAG}$TAG 在撰写文件中指定您想在何处使用标签变量(两者都有效)

    如果您是 LINUX 用户,这应该可以正常工作。

    如果您是 WINDOWS 用户并且命令不起作用,您可以改用 GIT BASH。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-29
      相关资源
      最近更新 更多