【问题标题】:Set $PROJECT_NAME in docker-compose file在 docker-compose 文件中设置 $PROJECT_NAME
【发布时间】:2017-07-05 10:46:12
【问题描述】:

我对多个项目使用相同的docker-compose.yml 文件。我真的很懒,所以我不想以docker-compose -p $PROJECT_NAME up开头。

从 Docker 版本 17.06.0 开始,是否可以直接在 docker-compose.yml 文件中设置变量?

【问题讨论】:

  • 变量名是什么?我在文档中找不到
  • 请澄清或添加文档链接。

标签: docker docker-compose


【解决方案1】:

现在,我们可以使用the .env file 来设置自定义项目名称,如下所示:

COMPOSE_PROJECT_NAME=SOMEPROJECTNAME

它不灵活,但总比没有好。目前有an open issue将此视为提案。

【讨论】:

  • Compose 支持在名为.env 的环境文件中声明默认环境变量,该文件位于执行docker-compose 命令的文件夹(当前工作目录)中。
  • 很傻,一直以来他们仍然无法直接在撰写文件中添加这个小功能。他们不这样做的理由是什么?如果我想为多个项目在同一个目录中运行 docker-compose 怎么办?那么.env文件就没用了
【解决方案2】:

我知道很久以前有人问过这个问题,但我遇到了同样的问题。有人建议添加功能https://github.com/docker/compose/issues/745,但他们不想。

但是,我在目录的根目录中有一个 Makefile,然后您可以在 Makefile 中添加类似的内容:

.PHONY: container-name
container-name:
    docker-compose -p $PROJECT_NAME up -d container-name

然后运行make container-name

我知道这不是您想要的,但也许可以让您的生活更轻松。

【讨论】:

【解决方案3】:

您可以将它们添加为您的环境变量,这些变量可通过您使用 docker compose 启动容器的会话中获得。

也就是说,如果你想在你的 docker-compose.yaml 中的某个地方使用 $PROJECT_NAME,那么如果这个变量在你的会话中有一个值,那么它将被拾取。

在 yaml 中,您可以根据需要将其分配给任何内容。您希望作为某个脚本的命令行参数,即使这也是可能的。即,

working_dir: /opt
command: /bin/bash -c './script.sh ${PROJECT_NAME}'
volumes:
    - /var/run/:/host/var/run/

我正在使用 docker 版本:Docker 版本 17.09.0-ce,构建 afdb6d4 docker-compose 版本:docker-compose 版本 1.14.0,构建 c7bdf9e

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    • 2021-02-02
    • 1970-01-01
    • 2020-11-07
    • 2023-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多