我正在尝试在Docker容器中重复使用现有的食谱,但大多数食谱将在厨师客户端运行期间(例如Tomcat,apache2)启动服务。 由于厨师独奏在图像创build过程中运行,厨师运行只会失败。
如何防止食谱启动服务?
我正在使用下面的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:
{ "tomcat": { "base_version": "" }, "run_list": [ "recipe[tomcat]" ] }
和Berksfile:
source "https://supermarket.getchef.com" metadata cookbook 'tomcat'
看起来你正在使用没有修改属性的食谱,而tomcat cookbook的默认行为是运行一个“默认”的基本tomcat实例。
请参阅此处声明的资源和此处的属性设置。
你应该能够更新你的solo.json来覆盖这个属性:
{ "tomcat": { "base_version": "", "run_base_instance": false }, "run_list": [ "recipe[tomcat]" ] }
而且你不应该自动启动服务。
或者,你可以看看厨师容器项目文档,看看这是否映射到一个更好的生成程序为您的集装箱化的应用程序。