iam*_*unk 2 chef-infra jenkins docker
我写了一个 dockerfile 来使用厨师在容器内安装 jenkins。
我安装成功,但 jenkins 没有自动启动。我在 dockerfile 中实现了 CMD 命令,但无法做到。
我关注了一些关于此的文章,但在我的情况下不起作用
码头档案:
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
Run Code Online (Sandbox Code Playgroud)
厨师食谱:
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
Run Code Online (Sandbox Code Playgroud)
这并不是 Docker 的真正工作方式。您不会在容器内运行服务,而是运行一个进程。容器本身就是一种服务。在这种情况下,您使用 Chef 作为您的服务经理,这可能是一个坏主意。不幸的是,Docker 不太适合这种管理方式。Right™ 解决方案可能正在转向无用的答案领域(具体来说,您可能想要更像 Chef 使用 rkt 来容器化 jenkins 设置 systemd/Upstart/Supervisord/Runit 服务作业的东西)。
回答更直接的问题:您的基本映像是使用 Upstart 的 CentOS 6。Upstart 无法在 Docker 内部运行,因为它想成为真正的 PID 1 并且对几乎所有内容都具有原始级别的访问权限。如果您将入口点命令更改为更相似java -jar /path/to/jenkins.war或类似的命令,您应该会看到它开始。如果您还想导出日志,您可能需要一些更高级的东西。通常,对于容器化应用程序,您会将其配置为直接登录到标准输出,而不是尝试像这样拖尾文件。
| 归档时间: |
|
| 查看次数: |
863 次 |
| 最近记录: |