Chef

chef-solo with docker:防止服務在建構期間啟動

  • October 3, 2014

我正在嘗試在 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項目文件,看看這是否映射到您的容器化應用程序的更好建構過程。

引用自:https://serverfault.com/questions/630608