使用docker-compose时是否可以设置堆栈名称?
当前它使用文件夹名称(这是一个可怕的区域),这会引起一些混乱。
例如,我们有几个项目,这些项目的数据库文件夹包含数据库堆栈。在单个主机上运行它们时,我们现在有几个数据库堆栈。
答案 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
选项指定的一样。