Docker Compose:在不重建应用程序的情况下更改Compose\u项目\u名称

Docker Compose:在不重建应用程序的情况下更改Compose\u项目\u名称,docker,docker-compose,Docker,Docker Compose,摘要: 我有一个应用程序X,我希望在同一操作系统中部署同一应用程序的多个实例(端口号将由.env处理),而无需为每个实例启动构建 我所尝试的: 因此,我设法动态地(通过用户更改.env文件)更改容器的container\u名称。但是我们不能同时运行5个实例(即使端口不同,docker也只是停止第一个实例,然后为第二个实例重新创建容器) 接下来,我遇到了COMPOSE\u PROJECT\u NAME,它似乎可以工作,但启动了一个新的构建 COMPOSE\u PROJECT\u NAME=hel

摘要

我有一个应用程序X,我希望在同一操作系统中部署同一应用程序的多个实例(端口号将由.env处理),而无需为每个实例启动
构建

我所尝试的

因此,我设法动态地(通过用户更改.env文件)更改容器的
container\u名称。但是我们不能同时运行5个实例(即使端口不同,docker也只是停止第一个实例,然后为第二个实例重新创建容器)

接下来,我遇到了
COMPOSE\u PROJECT\u NAME
,它似乎可以工作,但启动了一个新的构建


COMPOSE\u PROJECT\u NAME=hello-01

docker-compose up
Creating network "hello-01_default" with the default driver
Building test
Step 1/2 : FROM ubuntu:latest
 ---> 113a43faa138
Step 2/2 : RUN echo Hello
 ---> Using cache
 ---> ba846acc19e5
Successfully built ba846acc19e5
Successfully tagged hello-01_test:latest
WARNING: Image for service test was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Creating hello-01_test ... done
Attaching to hello-01_test
hello-01_test exited with code 0

COMPOSE\u PROJECT\u NAME=hello-2

docker-compose up
Creating network "hello-02_default" with the default driver
Building test
Step 1/2 : FROM ubuntu:latest
 ---> 113a43faa138
Step 2/2 : RUN echo Hello
 ---> Using cache
 ---> ba846acc19e5
Successfully built ba846acc19e5
Successfully tagged hello-02_test:latest
WARNING: Image for service test was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Creating hello-02_test ... done
Attaching to hello-02_test
hello-02_test exited with code 0

源文件

docker compose.yml

version: '3'
services:
  test:
    container_name: "${COMPOSE_PROJECT_NAME}_test"
    build: .
.env

COMPOSE_PROJECT_NAME=hello-02
Dockerfile

FROM ubuntu:latest
RUN echo Hello


通过更改容器名称而不提供
映像:
引用,撰写文件不知道您已经构建了该映像。因此,如果将docker映像构建为某个局部映像
example/image/local,则可以将
image:example/image/local
添加到docker compose文件中,并通过在示例中使用环境变量更改名称多次生成
docker compose up-d`

然而,看起来您可能希望研究使用副本,而不是在docker compose中得到的一行满满的数据之外进行可怕的手动操作


< /P>你所说的任何东西看起来都很完美,但是我需要一个更快的方法,所以 DOCKER标签存在:最新的:最新的:<代码>这个代码<代码> Bug:认为它已经出现了,所以跳过了,不是只洗你的标签吗?你可能想认真考虑副本,这取决于你的用例。但是,如果您想要一个容器的多个实例,那么10次中有9次您想要使用副本。

Ubuntu 18.04.1 LTS 
Docker version 18.06.0-ce, build 0ffa825
docker-compose version 1.21.2, build a133471