如何将环境变量传递给 docker-compose up

新手上路,请多包涵

我正在尝试运行一个容器。我已经将图像上传到私有 Docker 注册表。我想编写一个撰写文件来下载和部署图像。但我想通过 docker-compose run 命令将 TAG 名称作为变量传递。我的 compose 文件如下所示。如何将 KB_DB_TAG_VERSION 的值作为 docker-compose up 命令的一部分传递?

 version: '3'
services:
   db:
    #build: k-db
    user: "1000:50"
    volumes:
      - /data/mysql:/var/lib/mysql
    container_name: k-db
    environment:
      - MYSQL_ALLOW_EMPTY_PASSWORD=yes
    image:  XX:$KB_DB_TAG_VERSION
    image: k-db
    ports:
      - "3307:3306"

原文由 Abhi.G 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 640
2 个回答

你有两个选择:

  1. 按照另一个 答案 中的建议创建 .env 文件
  2. KEY=VALUE 对添加到您的 docker-compose 命令中,例如:
    KB_DB_TAG_VERSION=kb-1.3.20-v1.0.0 docker-compose up

在脚本中更早地导出它也应该有效,例如:

    export KB_DB_TAG_VERSION=kb-1.3.20-v1.0.0
   docker-compose up

原文由 Jakub Kukul 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以在执行 docker-compose up 命令的目录上创建一个 .env 文件(以及您的 docker-compose.yml 文件所在的目录),其内容如下:

 KB_DB_TAG_VERSION=kb-1.3.20-v1.0.0

您的 docker-compose.yml 文件应如下所示(添加 {} ):

 version: '3'
services:
   db:
     user: "1000:50"
     volumes:
       - /data/mysql:/var/lib/mysql
     container_name: k-db
     environment:
       - MYSQL_ALLOW_EMPTY_PASSWORD=yes
     image: XX:${KB_DB_TAG_VERSION}
     image: k-db
     ports:
       - "3307:3306"

进行上述更改后,使用命令 docker-compose config 检查更改是否反映。变量将被变量值替换。请参阅 此处 的页面以了解有关变量替换的更多信息。

原文由 Sebastian Brosch 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题