web-dev-qa-db-ja.com

dockerを使用したchef-solo:ビルド中にサービスが開始されないようにする

Dockerコンテナー内で既存のクックブックを再利用しようとしていますが、ほとんどのレシピは、chefクライアントの実行中にサービスを開始します(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

Runbook(solo.json)のTomcat:

{
  "Tomcat": {
    "base_version": ""
  },
  "run_list": [ "recipe[Tomcat]" ]
}

およびBerksfile:

source "https://supermarket.getchef.com"
metadata
cookbook 'Tomcat'
1
jr42

属性が変更されていないクックブックを使用しているようです。Tomcatクックブックのデフォルトの動作は、「デフォルト」のベースTomcatインスタンスを実行することです。

宣言されたリソース ここ および属性設定 ここ を参照してください。

solo.jsonを更新して、この属性をオーバーライドできるはずです。

{
  "Tomcat": {
    "base_version": "",
    "run_base_instance": false
  },
  "run_list": [ "recipe[Tomcat]" ]
}

また、サービスを自動的に開始するべきではありません。

または、 chef-container プロジェクトのドキュメントを見て、これがコンテナ化されたアプリケーションのより適切なビルド手順に対応しているかどうかを確認することもできます。

0
Mike Fiedler