【发布时间】:2018-11-20 21:18:25
【问题描述】:
在使用 docker-compose 时有没有办法设置栈名?
目前它使用文件夹名称(这是一个可怕的区域),这会导致一些混乱。
例如,我们有几个项目有一个包含数据库堆栈的数据库文件夹。当在单个主机上运行这些时,我们现在有多个数据库堆栈。
【问题讨论】:
标签: docker-compose
在使用 docker-compose 时有没有办法设置栈名?
目前它使用文件夹名称(这是一个可怕的区域),这会导致一些混乱。
例如,我们有几个项目有一个包含数据库堆栈的数据库文件夹。当在单个主机上运行这些时,我们现在有多个数据库堆栈。
【问题讨论】:
标签: docker-compose
有几种方法可以做到:
1.调用docker-compose时使用--project-name(或-p)选项:
docker-compose -p "my-app" up
注意:
-p "my-app"必须在up之前。
2。 COMPOSE_PROJECT_NAME 环境变量:
export COMPOSE_PROJECT_NAME=my-app
docker-compose up
3. .env 文件中的 COMPOSE_PROJECT_NAME
在项目根目录中创建一个名为 .env 的文件,并在那里设置 COMPOSE_PROJECT_NAME 环境变量:
COMPOSE_PROJECT_NAME=some_app
然后:
docker-compose up
.env 文件是从 docker-compose 命令所在的文件夹 中读取的 执行,而不是从 docker-compose.yml 文件的文件夹中执行。
假设项目结构如下:
root
- database
- docker-compose.yml
- .env
- app
- docker-compose.yml
- .env
- ...
在根文件夹中执行的以下命令不会产生预期的效果:
# Stack name 'database' (the folder name). The root/database/.env file not read.
docker-compose -f ./database/docker-compose.yml up
docker-compose命令需要在root/database文件夹中执行:
# Stack name from the root/database/.env
cd database
docker-compose up
如果您使用选项 2 或 3,项目名称将应用于所有 docker-compose 命令,就像使用
-p选项指定一样。
【讨论】: