Docker Compose: измените COMPOSE_PROJECT_NAME, не перестраивая приложение - PullRequest
0 голосов
/ 20 декабря 2018

Сводка :

У меня есть приложение X, я хочу развернуть несколько экземпляров одного и того же приложения (номера портов будут обрабатываться .env) в одной ОС без запускаbuild для каждого экземпляра.

Что я пробовал :

Итак, мне удалось динамически (путем изменения пользователем файла .env) изменить container_nameконтейнера.Но тогда мы не можем запустить 5 экземпляров одновременно (даже если порты разные, Docker просто останавливает первый, заново создает контейнер на секунду)

Далее я наткнулся на COMPOSE_PROJECT_NAME, который, кажется, работает, НОначинает новую сборку.


COMPOSE_PROJECT_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_PROJECT_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

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

1 Ответ

0 голосов
/ 20 декабря 2018

Изменяя имя контейнера без указания ссылки image:, составной файл не знает, что вы уже создали этот образ.Поэтому, если вы создаете этот образ докера как какое-то локальное изображение example/image/local, you can add image: example / image / local to your docker-compose file and do that to spawn docker-compose up -d` много раз, меняя имя с помощью переменной окружения в вашем примере.

Однако, похоже, что вы, возможно, захотите изучить использование реплик вместо того, чтобы делать это ужасно ручным усилием за пределами одной полной строки, которую вы получите из docker-compose.

https://docs.docker.com/compose/compose-file/#short-syntax

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...