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

кот в моем runbook (solo.json):

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

и Berksfile:

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

1 ответ

Решение

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

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

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

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

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

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

Другие вопросы по тегам