带有docker-compose的堆栈名称

时间:2018-11-20 21:18:26

标签: docker-compose

使用docker-compose时是否可以设置堆栈名称?

当前它使用文件夹名称(这是一个可怕的区域),这会引起一些混乱。

例如,我们有几个项目,这些项目的数据库文件夹包含数据库堆栈。在单个主机上运行它们时,我们现在有几个数据库堆栈。

1 个答案:

答案 0 :(得分:7)

有几种方法可以做到:

1。调用-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

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命令需要在根/数据库文件夹中执行:

# Stack name from the root/database/.env
cd database
docker-compose up

如果使用选项2或3,则将项目名称应用于所有docker-compose命令,就像使用-p选项指定的一样。