0

シェフソロを使用してドッカーでコミュニティ gerrit クックブックを実行しています。

ビルド ステップとして Dockerfile でクックブックを実行すると、エラーがスローされます (ログを確認してください)。しかし、イメージを実行してコンテナー内に移動し、同じコマンドを実行すると、正常に動作します。

何が起こっているのか分かりますか?sudoについて不平を言っていますが、シンボリックリンクを作成し続けています。「target_mode = nil」は、コンテナ内でコマンドを実行しても同じことを訴えるので問題ありませんが、正常に動作します。意味をなさない init.d スクリプトについて不平を言うことになります。

ビルドステップとしてのchef-solo:

RUN chef-solo --log_level debug -c /resources/solo.rb -j /resources/node.json

ログ:

[ :08+01:00] INFO: Processing ruby_block[gerrit-init] action run (gerrit::default line 225)
sudo: sorry, you must have a tty to run sudo
[ :08+01:00] INFO: /opt/gerrit/war/gerrit-2.7.war exist....initailizing gerrit
[ :08+01:00] INFO: ruby_block[gerrit-init] called
[ :08+01:00] INFO: Processing link[/etc/init.d/gerrit] action create (gerrit::default line 240)
[ :08+01:00] DEBUG: link[/etc/init.d/gerrit] created symbolic link from /etc/init.d/gerrit -> /opt/gerrit/install/bin/gerrit.sh
[ :08+01:00] INFO: link[/etc/init.d/gerrit] created
[ :08+01:00] DEBUG: found target_mode == nil, so no mode was specified on resource, not managing mode
[ :08+01:00] DEBUG: found target_uid == nil, so no owner was specified on resource, not managing owner
[ :08+01:00] DEBUG: found target_gid == nil, so no group was specified on resource, not managing group
[ :08+01:00] INFO: Processing link[/etc/rc3.d/S90gerrit] action create (gerrit::default line 244)
[ :08+01:00] DEBUG: link[/etc/rc3.d/S90gerrit] created symbolic link from /etc/rc3.d/S90gerrit -> ../init.d/gerrit
[ :08+01:00] INFO: link[/etc/rc3.d/S90gerrit] created
[ :08+01:00] DEBUG: found target_mode == nil, so no mode was specified on resource, not managing mode
[ :08+01:00] DEBUG: found target_uid == nil, so no owner was specified on resource, not managing owner
[ :08+01:00] DEBUG: found target_gid == nil, so no group was specified on resource, not managing group
[ :08+01:00] INFO: Processing service[gerrit] action enable (gerrit::default line 248)
[ :08+01:00] DEBUG: service[gerrit] supports status, running

================================================================================
Error executing action `enable` on resource 'service[gerrit]'
================================================================================

Chef::Exceptions::Service
-------------------------
service[gerrit]: unable to locate the init.d script!

Resource Declaration:
---------------------
# In /var/chef/cookbooks/gerrit/recipes/default.rb

248: service 'gerrit' do
249:   supports :status => false, :restart => true, :reload => true
250:   action [ :enable, :start ]
251: end
252:

Compiled Resource:
------------------
# Declared in /var/chef/cookbooks/gerrit/recipes/default.rb:248:in `from_file'

service("gerrit") do
  action [:enable, :start]
  supports {:status=>true, :restart=>true, :reload=>true}
  retries 0
  retry_delay 2
  guard_interpreter :default
  service_name "gerrit"
  pattern "gerrit"
  cookbook_name :gerrit
  recipe_name "default"
end
4

2 に答える 2

0

コンテナーは仮想マシンではありません。つまり、コンテナーは単一のプロセスを実行し、プロセス マネージャーが実行されていません。これが、chef-solo でサービス リソースの作成に問題が発生する理由を説明しています。

シェフがコンテナ用に設計している新しいサポートのいくつかについて読むことをお勧めします。

最初に読んだだけで意味をなすとは思いません。Chef がコンテナを構築する最良の方法であるとはまだ確信していません。

于 2014-09-27T08:57:09.893 に答える