如何定制镜像-Jenkins与Docker
本文详细介绍了如何根据项目需求定制Jenkins的Docker镜像。在官方镜像的基础上,添加自定义的软件和库,以更好地支持项目开发。通过定制Jenkins镜像,我们可以将所需的开发环境直接集成到镜像中,避免了在每次创建容器时重复安装软件的麻烦,并且在迁移时更加便利。
一、引言
在现代软件开发中,定制化的 Jenkins Docker 镜像可以为项目的持续集成提供更大的灵活性和效率。官方 Jenkins 镜像虽然已经支持许多常见的功能,但在某些特定场景下,仍可能需要额外添加软件和库。因此,了解如何在官方镜像基础上制作适合自己项目需求的定制化镜像是非常重要的。
二、技术小结
根据实际需求选择 Jenkins 版本
在制作定制化 Jenkins 镜像时,首先需要根据项目需求选择合适的 Jenkins 版本。在此版本的基础上,添加所需的自定义功能和库。
安装必要的软件
根据项目需求安装必要的软件,如 gcc、node、golang 等。如果需要其他库,可以在 Dockerfile 中通过命令直接添加到镜像。
yum -y install gcc gcc-c++
yum -y install automake autoconf libtool make sshpass
三、定制配置
在 Linux 系统中,笔者使用 CentOS 7 作为基础镜像,并在其中安装所需软件。镜像名称为 jenkins/jenkins:centos7,并在此基础上进行软件安装和配置。
启动并进入容器
docker run -itd --name jenkins_build jenkins/jenkins:centos7 bash
sudo docker exec -it -u root jenkins_build bash
编辑 Jenkins 启动脚本
在 /usr/local/bin/jenkins.sh 中,找到 exec java 行,并进行编辑以添加自定义启动参数。
exec java -Duser.home="$JENKINS_HOME" -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true "${java_opts_array[@]}" -jar ${JENKINS_WAR} "${jenkins_opts_array[@]}" "$@"
四、最终成果
编写 myinit.sh 脚本
创建一个新的 myinit.sh 文件,用于设置环境变量和本地配置。
cat > myinit.sh <<-EOF
#!/bin/bash
export GOROOT=/usr/local/go
export GOBIN=$GOROOT/bin
export PATH=$PATH:$GOBIN
export GOPATH=/vagrant/golang_linux
export GOPROXY=https://goproxy.io,direct
export MYGO=$GOPATH/golang/src/github.com/latelee
export LANG=zh_CN.utf8
export LANGUAGE=zh_CN.utf8
export LC_ALL=zh_CN.utf8
EOF
Dockerfile 配置
在 Dockerfile 中定义所有必要的安装步骤和配置,以便构建最终的 Jenkins 镜像。
FROM jenkins/jenkins:centos7
COPY --chown=jenkins:jenkins jenkins.sh /usr/local/bin/
USER root
RUN echo "Late Lee build" > /my.info &&
date >> /my.info
RUN yum -y install gcc gcc-c++ automake autoconf libtool make sshpass wget
RUN curl --silent --location https://rpm.nodesource.com/setup_12.x | bash - &&
yum -y install nodejs
RUN curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | tee /etc/yum.repos.d/yarn.repo &&
yum -y install yarn
RUN wget https://studygolang.com/dl/golang/go1.15.6.linux-amd64.tar.gz &&
tar zxf go1.15.6.linux-amd64.tar.gz -C /usr/local/ &&
rm -rf go1.15.6.linux-amd64.tar.gz
USER jenkins
构建镜像
docker build -t latelee/jenkins:centos7 .
遗留问题
目前,Jenkins 控制台仍存在中文乱码的问题。需要进一步研究解决方案。
FAQ
问:如何选择合适的 Jenkins 版本进行定制镜像的制作?
- 答:在制作定制化 Jenkins Docker 镜像时,首先需要根据项目需求选择合适的 Jenkins 版本。不同版本可能包含不同的功能和修复,选择适合的版本是确保项目稳定性的第一步。在选择后,可以在此版本基础上添加所需的自定义功能和库。
问:在定制 Jenkins Docker 镜像时,如何安装必要的软件?
- 答:根据项目需求,可以在 Dockerfile 中使用命令安装必要的软件。例如,可以使用
yum命令安装gcc、node、golang等。具体命令如:yum -y install gcc gcc-c++ yum -y install automake autoconf libtool make sshpass这些命令会将所需软件直接添加到镜像中。
问:如何在定制 Jenkins Docker 镜像中进行配置?
- 答:可以通过编辑 Jenkins 启动脚本
/usr/local/bin/jenkins.sh来进行配置。在其中找到exec java行,并添加自定义启动参数。此外,还可以通过创建myinit.sh脚本来设置环境变量和本地配置。
问:如何构建最终的 Jenkins 镜像?
- 答:在 Dockerfile 中定义所有必要的安装步骤和配置后,可以使用以下命令构建镜像:
docker build -t latelee/jenkins:centos7 .该命令将生成一个名为
latelee/jenkins:centos7的定制 Jenkins 镜像。
问:如何解决 Jenkins 控制台的中文乱码问题?
- 答:文章提到目前 Jenkins 控制台存在中文乱码问题,但并未提供具体的解决方案。这可能需要进一步的研究和配置调整,如设置合适的字符编码或安装必要的字体包。
热门API
- 1. AI文本生成
- 2. AI图片生成_文生图
- 3. AI图片生成_图生图
- 4. AI图像编辑
- 5. AI视频生成_文生视频
- 6. AI视频生成_图生视频
- 7. AI语音合成_文生语音
- 8. AI文本生成(中国)
最新文章
- 开发者如何利用缓存技术提升API性能
- Orbitz API 全攻略:旅行社高效整合酒店、航班与租车服务的必读指南
- REST API命名规范的终极指南:清晰度和一致性的最佳实践
- Go:基于 MongoDB 构建 REST API — Fiber 版
- Agrio 农业智能警报:如何让作物健康管理更上一层楼?
- 免费IP地址查询API接口推荐
- 【2025】AI 占星报告批量生成器|基于 Astro-Seek API 微调 7B 模型,一键输出每日/每周运势
- 微信API接口调用凭证+Access token泄露
- 最流行的API认证方法
- FastAPI是什么?快速上手指南
- 通过API规范直接实现AI编码 – Apidog
- 将 GraphQL 单体迁移至 Apollo Federation