我们可以在 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 文件位于当前路径时才有效