docker-compose - как сделать контейнер контейнером без операций? - PullRequest
1 голос
/ 09 ноября 2019

У меня есть файл docker-compose.yml, который определяет веб-службу и базу данных.

Этот файл описывает мой основной вариант использования, который начинается с docker-compose up.

docker-compose.yml

version: '3.7'
services:
  webservice:
    image: my-webservice
    ports:
    - published: 8080
      target: 8080
  db-container:
    image: my-database
    ports:
      - '3306:3306'

У меня есть альтернативный сценарий, в котором я подключаю веб-сервис к существующей базе данных.

Эта альтернативная конфигурация вызывается с помощью docker-compose -f docker-compose.yml -f use-existing-db.yml up.

use-существующие-db.yml

version: '3.7'
services:
  webservice:
    volumes:
    - /some/dir/db.prop:/config/db.prop

Мой вопрос

В сценарии, которыйЯ описал выше, db-контейнер запускать не нужно.

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

Есть ли хорошая практика для превращения определенного контейнера в контейнер без операций с помощью docker-compose? Я предполагаю, что я просто сослался бы на другое имя изображения.

1 Ответ

1 голос
/ 11 ноября 2019

Одним из решений, которое я использовал в прошлом, было бы явное указание только поднабора услуг, которые вы хотите up.

docker-compose -f docker-compose.yml -f use-existing-db.yml up webservice

Если webservice если бы у вас была зависимость (depends_on) от db-container, вы могли бы сделать:

docker-compose -f docker-compose.yml -f use-existing-db.yml up --no-deps webservice

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