赞
踩
docker pull jenkins/jenkins:2.346.1-lts
docker run -d -p 8080:8080 -p 50000:50000 --name jenkin jenkins/jenkins:2.346.1-lts
mkdir -p /usr/docker/jenkins
docker cp jenkin:/var/jenkins_home /usr/docker/jenkins
需要修改下目录权限,因为当映射本地数据卷时,/data/jenkins_home/目录的拥有者为root用户,
而容器中jenkins用户的 uid 为 1000。
我们创建一个jenkins目录
chown -R 1000:1000 /usr/docker/jenkins
docker rm -f jenkin
cd /usr/docker/jenkis/jenkins_home
vim hudson.model.UpdateCenter.xml
#将url内容修改为清华大学官方镜像
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
docker run -u root -d -p 8083:8083 -p 50000:50000 \
-v /usr/docker/jenkins/jenkins_home:/var/jenkins_home \
-v $(which docker):/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/jdk/jdk1.8.0_333:/usr/local/java \
-v /usr/mvn/apache-maven-3.9.0:/usr/local/maven \
--name jenkins jenkins/jenkins:2.396
原文链接:Docker 搭建 Jenkins 容器 (完整详细版)_Touch&-DevPress官方社区 (csdn.net)
$(which docker) 语句表示,如果“which docker”在容器上运行,Docker 也会在本地计算机上运行“which container”,并将执行结果返回给容器
在实现持续集成之前, 需要确保以下插件安装成功。
clean install -Dmaven.test.skip=true -f pom.xml
clean install maven命令清除,打包
-Dmaven.test.skip=true 跳过测试
dockerfile:build 启动dockerfile插件构建容器
-f heima-leadnews-user/pom.xml 指定需要构建的文件(必须是pom)
此处构建仅为全部包的clean和install
内容如上基础依赖
新增shell脚本内容
if [ -n "$(docker ps -a -f name=$JOB_NAME --format '{{.ID}}' )" ]
then
#删除之前的容器
docker rm -f $(docker ps -a -f name=$JOB_NAME --format '{{.ID}}' )
fi
# 清理镜像
docker image prune -f
# 启动docker服务
docker run -d --net=host -e PARAMS="--spring.profiles.active=prod" --name $JOB_NAME docker_storage/$JOB_NAME
maven命令
clean install -Dmaven.test.skip=true dockerfile:build -f heima-leadnews/heima-leadnews-service/heima-leadnews-article/pom.xml
shell脚本
image_tag=$docker_registry/docker_storage/$JOB_NAME echo '================docker镜像清理================' if [ -n "$(docker ps -a -f name=$JOB_NAME --format '{{.ID}}' )" ] then #删除之前的容器 docker rm -f $(docker ps -a -f name=$JOB_NAME --format '{{.ID}}' ) fi # 清理镜像 docker image prune -f # 创建TAG docker tag docker_storage/$JOB_NAME $image_tag echo '================docker镜像推送================' # 推送镜像 docker push $image_tag # 删除TAG docker rmi $image_tag echo '================docker tag 清理 ================'
拉取仓库镜像
docker pull registry:latest
直接运行
docker run -d -p 5000:5000 --name registry -v /usr/docker/registry:/var/lib/registry registry:latest
正常生产环境中使用, 要配置HTTPS服务, 确保安全,内部开发或测试集成的局域网环境,可以采用简便的方式, 不做安全控制。
先确保持续集成环境的机器已安装好Docker客户端, 然后做以下修改:
vi /lib/systemd/system/docker.service
修改内容:
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.200.100:5000
指向安装Registry的服务IP与端口。
重启生效:
systemctl daemon-reload
systemctl restart docker.service
查看仓库资源
访问地址:http://120.0.0.1:5000/v2/_catalog
配置Docker客户端
正常生产环境中使用, 要配置HTTPS服务, 确保安全,内部开发或测试集成的局域网环境,可以采用简便的方式, 不做安全控制。
先确保持续集成环境的机器已安装好Docker客户端, 然后做以下修改:
vi /lib/systemd/system/docker.service
修改内容:
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.200.100:5000
指向安装Registry的服务IP与端口。
重启生效:
systemctl daemon-reload
systemctl restart docker.service
位置:Manage Jenkins–>Configure System
需要添加凭证
位置:Manage Jenkins–>Manage CreDentials
添加链接到130服务器的用户名和密码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WHNEpBCG-1679469766079)(assets/image-20210802010201146-20230313102911-1hf3oqh.png)]
创建项目参考之前创建过的用户微服务
maven命令
clean install -Dmaven.test.skip=true dockerfile:build -f heima-leadnews/heima-leadnews-service/heima-leadnews-article/pom.xml
shell脚本
image_tag=$docker_registry/docker_storage/$JOB_NAME echo '================docker镜像清理================' if [ -n "$(docker ps -a -f name=$JOB_NAME --format '{{.ID}}' )" ] then #删除之前的容器 docker rm -f $(docker ps -a -f name=$JOB_NAME --format '{{.ID}}' ) fi # 清理镜像 docker image prune -f # 创建TAG docker tag docker_storage/$JOB_NAME $image_tag echo '================docker镜像推送================' # 推送镜像 docker push $image_tag # 删除TAG docker rmi $image_tag echo '================docker tag 清理 ================'
远程服务器执行的shell脚本
echo '================拉取最新镜像================'
docker pull $docker_registry/docker_storage/$JOB_NAME
echo '================删除清理容器镜像================'
if [ -n "$(docker ps -a -f name=$JOB_NAME --format '{{.ID}}' )" ]
then
#删除之前的容器
docker rm -f $(docker ps -a -f name=$JOB_NAME --format '{{.ID}}' )
fi
# 清理镜像
docker image prune -f
echo '===============启动容器================'
docker run -d --net=host -e PARAMS="--spring.profiles.active=prod" --name $JOB_NAME $docker_registry/docker_storage/$JOB_NAME
注1:源码管理-Git配置,凭证Credentials插件缺失问题,导致的凭证为空,弹窗ERROR
注2:"Jenkins Build报错:[ERROR] Some problems were encountered while processing the POMs
注3:IDEA sun.misc.BASE64Encoder报错找不到
注4:[ERROR] No plugin found for prefix 'docker' in the current project and in the plugin groups
此文章是从我笔记本中粘贴过来的,尽管修了修但可能还有些不整洁的,不过不影响观看。哥们已经把能踩的坑都给你们踩完了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。