Я пытаюсь снова использовать существующие поваренные книги в контейнерах докера, но большинство рецептов запустит сервис во время выполненного клиента шеф-повара (например, кот, apache2). Когда соло шеф-повара работает во время создания изображений, которое просто приведет к сбою выполненный шеф-повар.
Как я могу препятствовать тому, чтобы поваренная книга запустила сервис?
Я использую следующий 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'
Похоже, что вы используете куки с неизменяемыми атрибутами, и по умолчанию куки-книга tomcat работает с базовым экземпляром tomcat "по умолчанию".
См. объявленный ресурс здесь и настройку атрибута здесь.
Вы должны иметь возможность обновить свой solo.json
, чтобы переопределить этот атрибут:
{
"tomcat": {
"base_version": "",
"run_base_instance": false
},
"run_list": [ "recipe[tomcat]" ]
}
И у вас не должно быть автоматического запуска сервиса.
Или же вы можете посмотреть проектную документацию chef-container и посмотреть, подходит ли это для лучшей процедуры сборки вашего контейнерного приложения.
.