有没有办法在使用 docker-compose 时设置堆栈名称?
目前它采用文件夹名称(这是一个可怕的区域),这会导致一些混乱。
例如,我们有几个项目有一个包含数据库堆栈的数据库文件夹。在单个主机上运行这些时,我们现在有几个数据库堆栈。
Maf*_*for 53
有几种方法可以做到:
1.调用时使用--project-name
(或-p
)选项docker-compose
:
docker-compose -p "my-app" up
注意:
-p "my-app"
必须在 之前up
。
2. COMPOSE_PROJECT_NAME 环境变量:
export COMPOSE_PROJECT_NAME=my-app
docker-compose up
Run Code Online (Sandbox Code Playgroud)
3. .env 文件中的 COMPOSE_PROJECT_NAME
在项目根目录中创建一个名为.env的文件,并在那里设置 COMPOSE_PROJECT_NAME 环境变量:
COMPOSE_PROJECT_NAME=some_app
Run Code Online (Sandbox Code Playgroud)
进而:
docker-compose up
Run Code Online (Sandbox Code Playgroud)
该.ENV文件从文件夹中读出其中泊坞-撰写命令被执行,而不是从搬运工-compose.yml文件的文件夹。
假设以下项目结构:
root
- database
- docker-compose.yml
- .env
- app
- docker-compose.yml
- .env
- ...
Run Code Online (Sandbox Code Playgroud)
下面的命令在根文件夹中执行,不会产生预期的效果:
export COMPOSE_PROJECT_NAME=my-app
docker-compose up
Run Code Online (Sandbox Code Playgroud)
docker-compose 命令需要在 root/database 文件夹中执行:
COMPOSE_PROJECT_NAME=some_app
Run Code Online (Sandbox Code Playgroud)
如果您使用选项 2 或 3,项目名称将应用于所有 docker-compose 命令,就好像它是使用
-p
选项指定的一样。
小智 17
看起来可以使用name
docker-compose 文件中的顶级元素设置项目名称,如下所述:https ://docs.docker.com/compose/compose-file/04-version-and-name/#name -顶级元素
\n\n顶级
\nname
属性由规范定义为要在用户未\xe2\x80\x99t 显式设置时使用的项目名称。name
Compose 实现必须为用户提供一种覆盖此名称的方法,并且应该定义一种机制来计算默认项目名称,以便在未设置顶级元素时使用。
这似乎在其他地方没有得到很好的记录,而且我没有在规范变更日志中看到对它的引用,所以我不确定这是否一直是规范的一部分,或者是否只是组成直到最近才支持它。
\n项目名称的优先级记录如下:
\n例子
\n我当前的目录(pwd
):
/Users/brahmlower/development/compose-test\n
Run Code Online (Sandbox Code Playgroud)\n我的撰写文件 ( cat docker-compose.yml
):
/Users/brahmlower/development/compose-test\n
Run Code Online (Sandbox Code Playgroud)\n如果没有该name
属性,我们希望看到堆栈以前缀开头,compose-test
因为这是目录的名称。但是,当我打开堆栈时,我们看到my-project
按预期撰写堆栈名称。
堆栈输出(docker compose up -d
):
[+] Running 2/2\n \xe2\xa0\xbf Network my-project_default Created\n \xe2\xa0\xbf Container my-project-hello-world-1 Started\n
Run Code Online (Sandbox Code Playgroud)\n版本
\n如果有帮助的话,我的 docker 版本是:
\n撰写 ( docker compose version
):
Docker Compose version v2.10.2\n
Run Code Online (Sandbox Code Playgroud)\n泊坞窗(docker version
):
Client:\n Cloud integration: v1.0.29\n Version: 20.10.17\n API version: 1.41\n Go version: go1.17.11\n Git commit: 100c701\n Built: Mon Jun 6 23:04:45 2022\n OS/Arch: darwin/arm64\n Context: default\n Experimental: true\n\nServer: Docker Desktop 4.12.0 (85629)\n Engine:\n Version: 20.10.17\n API version: 1.41 (minimum version 1.12)\n Go version: go1.17.11\n Git commit: a89b842\n Built: Mon Jun 6 23:01:01 2022\n OS/Arch: linux/arm64\n Experimental: false\n containerd:\n Version: 1.6.8\n GitCommit: 9cd3357b7fd7218e4aec3eae239db1f68a5a6ec6\n runc:\n Version: 1.1.4\n GitCommit: v1.1.4-0-g5fd4c4d\n docker-init:\n Version: 0.19.0\n GitCommit: de40ad0\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
12263 次 |
最近记录: |