如何覆盖docker-compose项目名称和网络名称

如何覆盖docker-compose项目名称和网络名称

我们可以在 docker-compose.yml 中覆盖我们的项目和网络名称吗,即不使用标志或环境变量?

答案1

这可以通过 docker-compose 调用的参数来完成:

$> docker-compose -p THISISMYPROJECT_AND_NWK_NAME up -d

不幸的是,目前没有办法坚持下去。(见:https://github.com/docker/compose/issues/745

这就是为什么我个人更喜欢在 ~/.bash_aliases(基于 Debian 的 Linux)中为我的项目添加 bash 别名,例如:

# project PROJECT shortcuts
alias dc_PROJECT_up='docker-compose -p PROJECT up -d'
alias dc_PROJECT_down='docker-compose -p PROJECT down'

# general docker compose shortcuts
alias dc='docker-compose '
alias dc_up='docker-compose up -d'
alias dc_down='docker-compose down'

因此我可以调用 dc_PROJECT_up 来启动我的项目,项目名称为 PROJECT。然后网络名称为 PROJECT_default。

此外,您还可以在 docker-composer.yml 中设置具有自定义名称的其他网络,如下所示(v. 2.1):

version: '2.1'

...

networks:
  mynwk:
    driver: bridge
    name: mynwk

 ...

您可以使用以下命令进行检查:

 $> docker network ls

您应该获得包括您的网络和默认网络在内的网络列表。

答案2

你可以创建一个带有 key=value 选项的 .env 文件,例如

COMPOSE_PROJECT_NAME={project name}

你应该注意,这仅当 .env 文件位于当前路径时才有效

相关内容