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 и посмотреть, соответствует ли это лучшей процедуре сборки для вашего приложения в контейнере.