Назад | Перейти на главную страницу

chef-solo с докером: запретить запуск сервисов во время сборки

Я пытаюсь повторно использовать существующие кулинарные книги в контейнерах докеров, но большинство рецептов запускают службу во время запуска клиента Chef (например, tomcat, apache2). Поскольку запуск chef-solo выполняется во время создания образа, запуск chef просто завершится ошибкой.

Как я могу запретить кулинарной книге запускать службу?

Я использую следующий файл Dockerfile

FROM jr42/chef-solo-centos

ADD chef /chef
RUN cd /chef && /opt/chef/embedded/bin/berks vendor /chef/cookbooks
RUN chef-solo -N mynode -c /chef/solo.rb -j /chef/solo.json

tomcat в моем модуле Runbook (solo.json):

{
  "tomcat": {
    "base_version": ""
  },
  "run_list": [ "recipe[tomcat]" ]
}

и Berksfile:

source "https://supermarket.getchef.com"
metadata
cookbook 'tomcat'

Похоже, что вы используете книгу рецептов с неизмененными атрибутами, а поведение книги рецептов tomcat по умолчанию - запускать базовый экземпляр Tomcat по умолчанию.

Обратитесь к заявленному ресурсу Вот и установка атрибута Вот.

Вы сможете обновить свой solo.json чтобы переопределить этот атрибут:

{
  "tomcat": {
    "base_version": "",
    "run_base_instance": false
  },
  "run_list": [ "recipe[tomcat]" ]
}

И у вас не должно быть автоматического запуска службы.

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