Chef
chef-solo with docker:防止服務在建構期間啟動
我正在嘗試在 docker 容器中重用現有的食譜,但大多數食譜將在廚師客戶端執行期間啟動服務(例如 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(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項目文件,看看這是否映射到您的容器化應用程序的更好建構過程。