2016-09-30 10 views
2

Мы разрабатываем небольшой проект, состоящий из mongodb, java backend и front-end на основе express-js. Мы выбрали docker-compose как инструмент развертывания для всех, кроме производства, и до сих пор это было довольно хорошо с одним исключением.Управление файлами переопределения докеров

В настоящее время мы используем его для:

  • работает локальный кластер Dev;
  • тесты интеграции (с некоторыми настройками и дополнительными зависимостями);
  • подготовка среды для тестирования нагрузки (с большим количеством настроек);
  • работающая промежуточная среда/демонстрационная среда на отдельной облачной машине.

Чтобы обработать все эти различные твики на окружающую среду мы выведенные набор докеров-Compose файлов: docker-compose.yml, d-c.override.yml, d-c.test.yml, d-c.load.yml и d-c.demo.yml (docker-compose заменен d-c для краткости).

Это заставляет нас использовать чрезмерно длинные вызовы командной строки, чтобы делать что-либо, кроме основных задач. Например:

docker-compose -f docker-compose.yml -f docker-compose.test.yml up -d --build 
docker-compose -f docker-compose.yml -f docker-compose.test.yml exec test_container ./do_tests.sh 

И все идет хуже.

До сих пор мы получили несколько идей об улучшении, что:

  1. использовать полный докер-компоновать файлы вместо частичного копить печатать - но дополнительное обслуживание при изменении структуры приложения/вводятся дополнительные параметры;
  2. (вариант первого) использует extends для обслуживания и сводит к минимуму копию-вставку (но добавляет дополнительную сложность);
  3. хранить все эти длинные команды в Makefile (или сценарии bash). Простота использования, но он чувствует себя как сложная сложность под ковриком;
  4. (вариант первого) разрабатывает плагин для создания докеры/собственного инструментария - может быть более явным в обработке наших потребностей, но в дополнение к сложности обслуживания и развертывания.

Все эти идеи имеют свои недостатки - интересно, какие правильные решения для этого и какие инструменты уже существуют.

+0

То же самое, мы разделили их на отдельные папки. Держите его простым;) cd stage/docker-compose up :-) – opHASnoNAME

ответ

1

Я думаю, что 3 звучит как хорошее решение. Это не «спрятать сложность», а просто автоматизировать повторяющуюся задачу (набрав длинные командные строки).

Makefile будет работать, но вас также может заинтересовать dobi (отказ от ответственности: Я являюсь автором этого инструмента). dobi позволяет вам определить все ваши задачи проекта в файле yaml, включая запуск Compose с разными файлами и именем проекта. Пример конфигурации для вашего проекта может выглядеть как этот

compose=dev: 
    files: [docker-compose.yaml, d-c.override.yml] 

compose=test: 
    files: [docker-compose.yaml, d-c.test.yml] 

compose=load: 
    files: [docker-compose.yaml, d-c.load.yml] 

Затем вы можете запустить задачу с dobi dev и т.д.

Вы даже можете обнаружить, что некоторые из одноразовых задач могут быть перемещены в dobi config, устраняя необходимость иметь дополнительные команды для переопределения.

Смежные вопросы