我可以在同一目录中有多个 docker compose yaml 文件吗?

MiG*_*iGo 5 docker docker-compose

我可以在同一目录中保存多个 docker-compose.yml 文件吗?例如

我想要带有一些服务的 docker-compose-1.yml 和带有一些其他服务的 docker-compose-2.yml。是否有任何要求具有特定的文件名以及用于启动它的命令是什么?

docker-compose up --build -f docker-compose-1.yml ??
Run Code Online (Sandbox Code Playgroud)

这导致

ERROR: 
        Can't find a suitable configuration file in this directory or any
        parent. Are you in the right directory?

        Supported filenames: docker-compose.yml, docker-compose.yaml
Run Code Online (Sandbox Code Playgroud)

小智 6

您确实docker-compose可以在同一目录中保存多个具有不同名称的文件(它们可以完全自定义)并同时启动它们。

尝试这个:

docker-compose -f docker-compose1.yml -f docker-compose2.yml up --build
Run Code Online (Sandbox Code Playgroud)

-farguements应前up--build后。

请注意,在许多 docker compose 文件的情况下,这些文件被合并,请在此处查看更多信息:https : //docs.docker.com/compose/extends/#multiple-compose-files


Moh*_*asi 6

您可以使用参数在多个 docker-compose 文件中运行服务-p

-p, --project-name NAME

因此,以下命令应该有效:

docker-compose -f ./docker-compose-new.yml -p new_project_name up -d
Run Code Online (Sandbox Code Playgroud)

请参阅文档中的此参数。

您还可以在文件COMPOSE_PROJECT_NAME中使用变量.env,例如 file env.sample,如下所示:

COMPOSE_PROJECT_NAME=sample_project
Run Code Online (Sandbox Code Playgroud)

并在命令中使用此 .env 文件,如下所示:

docker-compose --env-file env.sample -f ./docker-compose-new.yml up -d
Run Code Online (Sandbox Code Playgroud)

请注意,您的容器将被命名为您的项目名称,例如sample_project-service_one
Just this!