Я пытаюсь повторно использовать существующие кулинарные книги в контейнерах докеров, но большинство рецептов запускают службу во время запуска клиента 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]" ]
}
И у вас не должно быть автоматического запуска службы.
В качестве альтернативы вы можете посмотреть на повар-контейнер документацию проекта и посмотрите, соответствует ли это лучшей процедуре сборки для вашего контейнерного приложения.