1、创建Jenkins数据和配置目录,并授权
mkdir /data/jenkins
chmod 777 /data/jenkins
2、拉取Jenkins镜像
docker pull jenkins/jenkins
3、启动Jenkins
docker run -d -u root --name jenkins -m 1024M --memory-swap=1024M --restart=always -p 9000:8080 -p 9001:50000 -v /etc/localtime:/etc/localtime -v /data/jenkins:/var/jenkins_home -v $(which docker):/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock --privileged=true jenkins/jenkins
-v /etc/localtime:/etc/localtime 使用宿主机时间
-v /data/jenkins:/var/jenkins_home 挂载目录
-m 1024M 设置内存使用
--memory-swap=1024M 设置虚拟内存
-v $(which docker):/usr/bin/docker
-v /var/run/docker.sock:/var/run/docker.sock 这两句是支持docker
4、启动Jenkiins
我这里是访问宿主机的9000端口
启动时做了挂载,所以要去/data/jenkins/secrets中找密钥
cd /data/jenkins/secrets
vim initialAdminPassword
复制里面的密钥,填入管理员密码中
安装推荐插件,然后等。。。
使用admin继续
5、更改国内插件源
在jenkins页面中点击"Manage Jenkins"--->"Manage Plugins"--->"Advanced"
把升级站点改为:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
进入/data/jenkins/updates中,用命令修改default.json文件
sed -i 's#https://updates.jenkins.io/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g' default.json && sed -i 's#http://www.google.com#https://www.baidu.com#g' default.json
重启Jenkins
6、集成gitee
1、先进入插件管理
安装gitee、Git Parameter 两个插件
2、配置gitee
系统管理-->系统配置 中找到gitee
证书令牌去gitee中配置
如果测试链接报错,安装Jersey 2 API插件。
3、创建项目
选参数化构建,选 Git Parameter
设置Gitee仓库
执行Shell脚本
构建脚本:
#!/bin/bash
docker stop authenticationcenterapi
docker rm -f authenticationcenterapi
echo `pwd`
echo ----------------------- Building Image ----------------------
docker build -t centerapi:latest -f ./Blue.AuthenticationCenter.API/Dockerfile .
echo ----------------------- Launching Container -------------------
docker run --name authenticationcenterapi -d -p 5000:80 centerapi:latest
删除空镜像脚本:
#### 清理生成的None的镜像####
echo ---------------Clear-Images...------------------
clearImagesList=$(docker images -f "dangling=true" -q)
if [ ! -n "$clearImagesList" ]; then
echo "no images need clean up."
else
docker rmi $(docker images -f "dangling=true" -q)
echo "clear success."
fi
但是。。。。构建报错了
因为没有配置Nuget。
在Dockerfile中添加如下
第一个地址是私有Nuget仓库地址,如果有多个可以-s接着写。
------------------------------------------- 上面是单服务器直接发布 ------------------------------------------
------------------------------------------- 下面是SSH远程发布 ------------------------------------------
1、安装Harbor
基于docker compose的Harbor仓库搭建 v2.4.3_一般等价物(污妖王)的博客-优快云博客_harbor 2.4.3 安装
2、Jenkins安装Publish Over SSH插件,并配置
搜索Publish Over SSH插件,我这边装好了,新装在Available plugins里面。
配置SSH
测试一下
3、配置项目的远程镜像构建和上传Harbor
进入发布的项目,前面都一样,构建步骤那里改成
执行脚本
#进入发布目录
cd /data/project
#执行构建,这里是docker compose v2版本,同时跟项目目录结构相关,下面有图
docker compose build
#登录Harbor
docker login 192.168.133.10:8001 -u admin -p hxxxxxxxxx4
#循环推送所有镜像至Harbor
#192.168.133.10:8001/mricoservice/userapi是镜像名称
for i in `docker images|grep 192.168.133.10:8001/mricoservice/userapi|grep -v 6.0 |awk '{print $1":"$2}'`; do docker push $i; done
#### 清理生成的None的镜像####
echo ---------------Clear-Images...------------------
clearImagesList=$(docker images -f "dangling=true" -q)
if [ ! -n "$clearImagesList" ]; then
echo "no images need clean up."
else
docker rmi $(docker images -f "dangling=true" -q)
echo "clear success."
fi
4、项目结构
项目结构如下,根目录下有docker-compose.yml文件
docker-compose.yml内容如下
version: '3.3'
services:
userservice:
build:
context: /data/project/userapi/
dockerfile: /data/project/userapi/Unicorn.User.Api/Dockerfile
image: 192.168.133.10:8001/mricoservice/userapi
其中:
192.168.133.10:8001是Harbor的IP:端口
mricoservice是Harbor中的项目名称,见下图
后面的镜像名称
5、服务器配置
修改/etc/docker/daemon.json,增加 "insecure-registries":["192.168.133.10:8001"],harbor的IP:端口
vim /etc/docker/daemon.json
修改 /lib/systemd/system/docker.service ,开启2376端口(没试不开行不行,反正我开了)
vim /lib/systemd/system/docker.service
修改结果如下
修改前:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
修改后:
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock --containerd=/run/containerd/containerd.sock
重启docker
systemctl daemon-reload
systemctl restart docker.service
systemctl enable docker.service
现在可以用Jenkins构建并上传Harbor了
6、远程部署容器
我这边Harbor的镜像仓库IP是192.168.133.10
发布服务器的IP是192.168.133.20
1、首先在20上面执行步骤5操作。
2、Jenkins中配置SSH服务,参照步骤2,Hostname是192.168.133.20
3、Jenkins项目配置中,增加SSH Server
写入执行脚本
echo ---------------delete container...------------------
docker rm -f UserMricoService
echo ---------------delete images...------------------
docker rmi -f 192.168.133.10:8001/mricoservice/userapi
echo ---------------Launching Container...------------------
docker run -d -p 5000:80 --restart=always --name UserMricoService 192.168.133.10:8001/mricoservice/userapi
到此结束!Over