Как продлить сервис в Docker Compose V3? - PullRequest
0 голосов
/ 01 октября 2018

У меня есть docker-compose.yml, который выглядит как

version: '2'
services:
  redis:
    image: redis

  mysqldb:
    image: mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD=passme
      - MYSQL_DATABASE=mydb
      - MYSQL_USER=root

  base:
    build: .
    volumes:
      - .:/proj
    environment:
      - ENV_1=Value_1
      - ENV_2=Value_2
      - ENV_3=Value_3

  worker:
    extends:
      service: base
    command: celery -A proj worker --loglevel=debug
    links:
      - redis
      - mysqldb
    depends_on:
      - mysqldb

  web:
    extends:
      service: base
    links:
      - mysqldb
      - redis
    depends_on:
      - mysqldb
    ports:
      - "8000:8000"
    command: python manage.py runserver 0.0.0.0:8000


Теперь я хочу обновить до версия-3 .

Из документа

Ключевое слово extends поддерживается в более ранних версиях Composeформаты файлов вплоть до файла Compose version 2.1 (см. расширение в v1 и расширение в v2), но не поддерживается в Compose version 3.x



Итак, вот мой вопрос: как я могу использовать файл Docker-compose версии 3, не теряя свои текущие функциональные возможности ?

Ответы [ 2 ]

0 голосов
/ 07 марта 2019

Расширение услуг не поддерживается в версии 3 после удаления extends.

Что касается обходного пути, вы можете использовать docker-compose addons, например

include:
    - http://example.com/compositions/servicea.yaml
    - http://example.com/compositions/serviceb.yaml

namespace: core

web:
    image: example/service_a:latest
    links: ['servicea.web', 'serviceb.api']

Другим способом является включение нескольких файлов композитора из командной строки (с несколькими параметрами -f).См .: Добавлена ​​поддержка нескольких композитных файлов при развертывании .Например,

docker-compose -f submodules/A_SUB_PROJECT/docker-compose.yml -f submodules/B_SUB_PROJECT/docker-compose.yml config | docker-compose -f - up

Источник: При использовании нескольких файлов docker-compose.yml из разных каталогов локальные пути не будут правильно соблюдаться .


В общем, версия 3 больше подходит для стеков Swarm / Kube , поэтому рассмотрите возможность его использования.

Например,

docker stack deploy -c docker-compose.yml mystack1
docker stack deploy -c another/docker-compose.yml mystack2

Если выЕсли вы не используете стеки Swarm или Docker Enterprise Kubernetes, нет причин использовать v3.Придерживайтесь версии 2.4, и вы получите все функции docker-compose cli, включая extends, depends_on, поля расширения и даже depends_on с проверками работоспособности (чтобы избежать wait-for-it сценариев).


Связанные:

0 голосов
/ 01 октября 2018

В документе сообщества docs.docker.com так ясно, какие изменения были внесены с 2.x в 3.x и что нужно сделать для его обновления;Я прошу вас воспользоваться этой ссылкой для обновления файла docker-compose.Я делюсь ссылкой для вашей информации здесь и выполняю поиск по «версиям от 2.x до 3.x», а также по документу также говорится о том, что необходимо сделать для ключевого слова extended ;выполнить поиск «Расширение услуг» в ссылке.

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