Arhn - архитектура программирования

Настройте переопределение docker-compose для игнорирования/скрытия некоторых контейнеров.

Если у меня есть (упрощенно), следующий docker-compose.yml:

parent:
  image: parent
  links:
    - child

child:
  image: child

Можно ли создать файл docker-compose.override.yml, который не создаст или запустит образ child?


Нежелательным (для меня) решением было бы перевернуть файлы так, чтобы файл yml по умолчанию создавал только parent, а переопределение создавало бы оба.

Однако я хотел бы, чтобы файл конфигурации master содержал наиболее распространенный сценарий использования.

09.05.2016

Ответы:


1

В защиту оригинального плаката: я полностью понимаю, почему вы хотите это сделать. Способ создания докеров всегда выглядит так: «поместите свой вариант в файлы переопределения», но в интересах простоты в большой команде разработчиков мне нравится:

  • Возможность запустить все одной командой (например, «docker-compose up» или «docker-compose up main»)
  • All of my docker definitions in one place
    • The only variation in override files to be which containers are disabled

Вот как я это сделал в своих файлах переопределения:

  # Disable database containers
  postgres:
    image: alpine:latest
    command: "true"
    entrypoint: "true"
  mysql:
    image: alpine:latest
    command: "true"
    entrypoint: "true"

В результате все контейнеры запускаются с помощью "docker-compose up", но те, которые я переопределил, сразу умирают.

Если вам нужен еще более легкий контейнер, чем alpine, попробуйте tianon/true.

29.07.2017
  • Лучшее решение, которое я нашел до сих пор. 30.05.2018
  • О боже, tianon/true - 125 bytes total - nothing but "true" (perfect for volume-only containers) Yes, those are "regular bytes" - static assembly for the win. 04.06.2019
  • альпийский: последние работы для меня. С tianon/true я получаю: Ошибка создания среды выполнения OCI: container_linux.go:345: запуск процесса контейнера вызвал exec: \true\: исполняемый файл не найден в $PATH: unknown 02.10.2019
  • @dprothero работает со следующими настройками в docker-compose.override.yml: image: tianon/true command: "" entrypoint: "" 21.04.2020

  • 2

    Мне очень нравится решение от Райана. Но его можно улучшить:

    # disable services
    fluentd:
        image: hello-world
        command: hello
        restart: no
    
    elasticsearch:
        image: hello-world
        command: hello
        restart: no
    

    Я считаю, что hello-world — это самый маленький образ (размер: ~ 1 КБ), с другой стороны, размер alpine linux составляет ~ 6 МБ.

    17.02.2019
  • Хе-хе... Я возьму твой 1Kb и подниму тебе 125b. См. tianon/true, упомянутый в конце моего поста. 06.06.2019

  • 3

    Для версий compose ‹ 1.28, январь 2021 г.

    Если вы отключаете несколько служб в файле переопределения (как в ответе Райана), вы можете найти это полезным для Не повторяйтесь, чтобы использовать поля расширения и yaml привязки (по сути, обратные ссылки в yaml).

    As in:

    # Your version
    version: "2.4"
    
    # `&anchor-name` defines the anchor (Here it is a map/dict)
    # `*anchor-name` references the anchor
    # `<<: *anchor-name` merges (`<<:`) the keys of `*anchor-name` with the current map
    
    x-disabled-service: &disabled
      image: "tianon/true"
      command: "true"
      entrypoint: "true"
    
    services:
      elasticsearch:
        <<: *disabled
        
      fluentdb:
        <<: *disabled
    

    Здесь используется tianon/true, как предложено в комментарии Райана как очень маленькое изображение.

    Результат функционально такой же, как ответы Райана или Романа, но немного менее подробный.

    Для версий Compose ›= 1.28

    Кроме того, согласно ответу Макарсона на аналогичный вопрос SO от compose 1.28, январь 2021, появилось новое поле компоновки, profiles, которое позволяет группировать вместе контейнеры, которые можно включать с помощью командной строки. вариант --profile.

    https://docs.docker.com/compose/profiles/

    05.02.2021
  • Мне нравится это решение, --profile элегантное и встроенное в последнюю версию docker-compose. 25.03.2021

  • 4

    Вам не нужно запускать каждую службу при запуске compose, вы можете просто запустить up и передать имена служб для запуска. См. официальный справочник для up здесь.

    Например: docker-compose up -d parent

    09.05.2016
  • правильно но не удобно если нужно запускать 6-8 контейнеров за раз 12.06.2019
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..