首页 > 其他 > 详细

Docker+Jenkins实现自动化部署

时间:2021-04-15 23:38:39      阅读:34      评论:0      收藏:0      [点我收藏+]

Docker+Jenkins实现自动化部署.docx

 

一、          安装Docker

1.安装所需的软件包 (其实这些腾讯云都具备了,只不过怕有些阉割版的系统缺少,所以贴上命令,安装过的使用该命令不会造成伤害)

# sudo yum install -y yum-utils   device-mapper-persistent-data   lvm2

2.使用稳定版的仓库(当然可以使用最新版或测试版的仓库,这个需要官方的说明)

# sudo yum-config-manager     --add-repo     https://download.docker.com/linux/centos/docker-ce.repo

3.安装Docker ce 

# sudo yum install docker-ce

tips:在生产系统上,您应该安装特定版本的Docker CE,而不是始终使用最新版本。

4.启动Docker

# sudo systemctl start docker

5.     重启docker

# sudo service docker restart

二、安装Jenkins

jenkins镜像,默认也是latest一般意味着最后最新版本。很多官方最新镜像也都是如此命名;直到后来安装配置完成后,登录进去提示我不是最新版本,并且很多插件已经不支持此版本了,Jenkins官方最新镜像现在已改为jenkins/jenkins的了。 所以最新版是:jenkins/jenkins

1. 拉取镜像Jenkins

docker pull jenkins/jenkins:lts

2. 创建jenkins文件夹

mkdir -p /home/var/jenkins

3. 设置目录权限

   3.1设置jenkins文件夹归属用户UID为1000

        chown -R 1000 /home/var/jenkins

   3.2运行Jenkins

       注意后面的镜像名称和版本lts

      docker run --name myjenkins -d -p 8080:8080 -p 50000:50000 -v /home/var/jenkins:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker --env JAVA_OPTS="-Duser.timezone=GMT+08"  jenkins/jenkins:lts

      //参数解释:

      - name 容器名称

      -p 8080:8080 -p 50000:50000 --映射jenkins端口

      -v /<your path>:/var/jenkins_home  将容器的目录挂载到宿主机的目录下,这样防止容器崩掉后数据都丢失的情况

      -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker

      --env JAVA_OPTS="-Duser.timezone=GMT+08"  解决jenkins时间显示和本地时间不一致的问题

4. 启动Jenkins  

      PS:myjenkins为刚刚设置的容器名称

      docker start myjenkins  

5. 检查容器运行状况

    docker ps

三、配置Jenkins

1.     访问Jenkins

查看容器启动成功后,我们可以通过地址+端口访问刚刚运行的Jenkins

例如http://服务器IP:8080    

2.     查看密码文件

提示首次访问需要密码,我们通过刚刚映射的Jenkins目录里查看这个默认密码。

默认密码路径:/home/var/jenkins/secrets/   (注意前面usr/local/jenkins路径就是刚刚自己映射的目录)

cat /home/var/jenkins/secrets/initialAdminPassword

3.     安装插件

登录进去以后默认选择推荐的插件。接下来就是等待安装

 

四、.NetCore项目设置

1.     创建项目

      这里我们创建一个新的.net core项目,创建项目的时候可以选择启用Docker支持。

2.     Dockerfile始终复制

     本地发布验证程序是否运行正常,并且Dockerfile属性要设置为 始终复制

3.     发布相关配置

     一般情况使用独立部署模式,独立部署微软做了压缩性能优化,需要安装SDK

     ps:默认启动端口是5000,可以修改appsetting.json文件,添加urls节点指定启动端口

     这里由于我的服务器5000已经有了Jenkins,所以改成8088

 

五、JenKins任务

1.     创建任务

       在Jenkins里面创建自由风格任务

2.     设置WebHook

Domain 选择 全局凭据

Kind 选择 Gitee API 令牌

Scope 选择你需要的范围

Gitee API Token 输入你的码云私人令牌,获取地址:https://gitee.com/profile/personal_access_tokens

ID, Descripiton 中输入你想要的 ID 和描述即可。

 

3.     设置git地址和构建环境

我这里是Gitee项目

3.1、设置代码仓库地址并配置凭据

技术分享图片

3.2 配置构建环境
技术分享图片

3.3 构建触发器(需要下载gitee插件才有该选项)

技术分享图片
3.4 生成Gitee WebHook 密码
技术分享图片
3.5前往gitee 配置WebHook 并将Jenkins生成的密码填写进去。

技术分享图片

3.6 配置构建脚本

技术分享图片

4.     设置构建shell

注意下面的mytestmvcmyweb-test改为自己的容器名称和对应镜像名称即可。

#!/bin/bash

echo --------------- Docker Container ID ------------------

 docker stop `docker ps -a| grep mytestmvc | awk ‘{print $1}‘ `

 docker rm   `docker ps -a| grep mytestmvc | awk ‘{print $1}‘ `

echo --------------- Docker Images ID ------------------

 docker image rm `docker images -q --filter reference=myweb-test:latest`

echo --------------- Docker Images ------------------

docker build -t myweb-test  .

echo --------------- Docker Container ------------------

 docker run -d -p 8088:8088 --name mytestmvc myweb-test:latest

 

5.     提交代码测试构建 

提交代码并推送

自动构建中

构建坑点:
1、docker 下jenkens 打包出现Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

  解决方案:

      # 进入Jenkins容器内(5c8 为容器id)

      docker exec -it -u root 5c8 bash

      # 修改docker权限

      chmod 777 /var/run/docker.sock

2、COPY failed: stat /var/lib/docker/tmp/docker-builder893785636/WebApplication1/WebApplication1.csproj: no such file or directory

   解决方案:
       修改shell  buid脚本:docker build -t mywebapp1 -f ./WebApplication1/Dockerfile .

六.          参考文章

1.    Docker升级

https://blog.csdn.net/qq_39629343/article/details/80168084

2.    Docker升级后容器错误

https://blog.csdn.net/bacteriumx/article/details/87611334

3  Jenkins执行Docker命令无权限问题
  https://www.cnblogs.com/printertool/p/12972908.html

4、解决使用默认dockefile进行构建no such file or directory
  https://www.cnblogs.com/xhznl/archive/2020/06/09/13081708.html

 

Docker+Jenkins实现自动化部署

原文:https://www.cnblogs.com/lvxiaowen/p/14664259.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!