与docker工人的厨师独奏:防止在构build期间启动服务

我正在尝试在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]" ] } 

而且你不应该自动启动服务。

或者,你可以看看厨师容器项目文档,看看这是否映射到一个更好的生成程序为您的集装箱化的应用程序。