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

ntv*_*t18 15 docker

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

小智 14

您可以使用 key=value 选项创建一个 .env 文件,例如

COMPOSE_PROJECT_NAME={project name}
Run Code Online (Sandbox Code Playgroud)

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


小智 10

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

$> docker-compose -p THISISMYPROJECT_AND_NWK_NAME up -d
Run Code Online (Sandbox Code Playgroud)

不幸的是,目前没有办法坚持它。(见: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'
Run Code Online (Sandbox Code Playgroud)

因此,我可以调用 dc_PROJECT_up 以项目名称 PROJECT 启动我的项目。那么网络名称是 PROJECT_default。

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

version: '2.1'

...

networks:
  mynwk:
    driver: bridge
    name: mynwk

 ...
Run Code Online (Sandbox Code Playgroud)

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

 $> docker network ls
Run Code Online (Sandbox Code Playgroud)

您应该得到一个网络列表,包括您的网络和默认网络。