2016-10-06 4 views
2

シェルフを使用してジェンキンをコンテナ内に取り付けるドッカーファイルを書きました。ドッキング用容器の中でジャンクを外的に始めることができません

正常にインストールされましたが、自動的にジェンキンが起動しません。私はdockerfileでCMDコマンドを実装しましたが、できませんでした。

私はこの上に掲載いくつかの記事を追ったが、私の場合には動作しませ

dockerfileんでした:

FROM centos:6 

RUN yum -y update 
RUN yum -y install wget 
RUN yum -y install httpd 
RUN wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins- ci.org/redhat/jenkins.repo 
RUN rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key 
RUN yum -y install java 
RUN yum -y install jenkins 

CMD service jenkins start && tail -F /var/log/jenkins/jenkins.log 

シェフのレシピ:

include_recipe 'docker' 

docker_node_data = '/tmp/docker1' 

directory docker_node_data do 
    action :create 
end 

cookbook_file "#{docker_node_data}/Dockerfile" do 
    source 'Dockerfile' 
end 

docker_image 'jenkins7' do 
    tag 'latest' 
    source docker_node_data 
    action :build 
end 

docker_container 'jenkins7' do 
    detach true 
    command 'top -b -d 5' 
    port '8080:8080' 
    action :run 
end 
+0

これが役立つかどうかわからない... https://nickhudacin.wordpress.com/2016/09/21/exploring-jenkins-dsl-preface-up-and-running-with-docker-jenkins/ –

答えて

4

これはドッカーがどのように動作するか本当にありません。コンテナ内でサービスを実行しないで、プロセスを実行します。コンテナ自体です。この場合、サービスマネージャーとしてシェフを使用していますが、これはおそらく悪い考えです。残念ながら、Dockerはこの種の管理にはあまり適していません。 Right™の解決策は、おそらく役に立たない回答に変わっているはずです(具体的には、シェフがジェンキンをコンテナ化するためにrktを使ってシステム/アップスタート/スーパーバイザー/ Runitサービスジョブを設定するようなものが必要でしょう)。

あなたのベースイメージは、Upstartを使用するCentOS 6です。 Upstartは真のPID 1でありたいと思っていて、Docker内でほとんど実行できない状態になっています。あなたのentrypointコマンドをjava -jar /path/to/jenkins.warのようなものに変更すると、それが始まるはずです。ログのエクスポートもしたいのであれば、もっと面白いものが必要かもしれません。一般的に、コンテナ化されたアプリケーションでは、そのようなファイルをテールするのではなく、stdoutに直接ログするように設定します。

関連する問題