准备两、三台服务器,都已配置好Docker环境,一台用来部署Jenkins,一台用来部署业务系统(即我们要发布的项目)
一台用安装Docker私有库(我的是把私仓库放在部署业务系统发布的服务器上面,所以只使用了两台服务器)
1,检测服务器上Docker安装是否成功
2,Docker开启远程访问
3,客户机配置好DOCKER_HOST环境变量
4,集成Docker+Maven插件
5,搭建Docker私有库Harbor
6,Jenkins搭建
7,Ansible搭建
(1)编辑docker的宿主机文件/lib/systemd/system/docker.service
[root@vultr ~]# vi /lib/systemd/system/docker.service
(2)修改以ExecStart开头的行,改为
ExecStart=
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
如果是centos7以下的话,就把ExecStart修改为:
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375
[root@vultr ~]# systemctl daemon-reload
(4)重启docker服务
[root@vultr ~]# service docker restart
(5)接下来测试一下看是否能连接到docker api。上面的2375就是对应端口
(6)如果看到控制台有数据返回,这里其实就已经成功了,也可以去外网测试一下
说明一下SpringBoot构建Docker镜像有两种方式
1,使用Dockfile文件
2,使用Maven文件pom.xml配置assembly插件实现自定义打包
pom.xml文件:
e,如果项目的jar包没有生成,可能会出现报错,建议先,生成jar包,再打包镜像
在控制台就可以看到输出的信息
[INFO] Building image dockerjarweb:v1
Step 1/7 : FROM openjdk:8u121-jre-alpine—> 319698b3b71a
Step 2/7 : MAINTAINER esqabc “www.esqabc.com”—> Running in 026f45794699
Removing intermediate container 026f45794699
—> f9d22e129cd9
Step 3/7 : VOLUME /tmp—> Running in 63439625af00
Removing intermediate container 63439625af00
—> e175d2a2d2d6
Step 4/7 : RUN cd /home && mkdir apps—> Running in b72c4220797c
Removing intermediate container b72c4220797c
—> 24e8627b87e1
Step 5/7 : ADD https://blog.csdn.net/esqabc/article/details/90257590/dockerjar.jar /home/apps—> 12135ce16160
Step 6/7 : EXPOSE 8888—> Running in baf2d3eb9310
Removing intermediate container baf2d3eb9310
—> f25f0e7a3c18
Step 7/7 : ENTRYPOINT [ “sh”, “-c”, “java -Djava.security.egd=file:/dev/https://blog.csdn.net/esqabc/article/details/90257590/urandom -Duser.timezone=GMT+08 -jar >/home/apps/dockerjar.jar” ]—> Running in fa8b60d8dc9f
Removing intermediate container fa8b60d8dc9f
—> 19812bb2465b
ProgressMessage{id=null, status=null, stream=null, error=null, progress=null, progressDetail=null}
Successfully built 19812bb2465b
Successfully tagged dockerjarweb:v1
[INFO] Built dockerjarweb:v1
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 07:16 min
[INFO] Finished at: 2019-05-21T11:57:56+08:00
[INFO] ------------------------------------------------------------------------
f,查看是否成功,到服务器执行命令:
(2)使用Maven文件pom.xml配置assembly插件实现自定义打包
…后续会慢慢补齐…
步骤:
(1)安装docker ,安装教程地址:https://blog.csdn.net/esqabc/article/details/89881374
(2)安装docker-compose
(3)安装Harbor
(4)修改Harbor配置文件
(5)Harbor启动和停止
(6)配置Harbor支持https访问
====================================================================
(1)安装docker省略…
(2)安装docker-compose(两种方式:pip,二进制文件)
下载地址:https://github.com/docker/compose/releases
a.1,安装docker-compose(pip方式):请访问 https://blog.csdn.net/funtaster/article/details/83268974
a.2,安装docker-compose(二进制文件方式)
b,赋予二进制文件可执行权限
[root@VM_161_84_centos compose]# chmod +x /usr/local/bin/docker-compose
(3)安装Harbor
下载页面:https://github.com/goharbor/harbor/releases
下载链接: https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-offline-installer-v1.8.0.tgz
注意:如果是国内网络,可能出现慢的现象,你下载版本太高与之匹配的Docker版本就要高
例如:Harbor1.8.0:Docker18.09.6 ,不然会出现版本不匹配的错误。
[root@test tools]# wget https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-offline-installer-v1.8.0.tgz
复制文件到:
[root@test tools]# cp harbor-offline-installer-v1.8.0.tgz /usr/local/
进入目录:
[root@test tools]# cd /usr/local/
解压
[root@test local]# tar -zxvf harbor-offline-installer-v1.8.0.tgz
(4)修改Harbor配置文件
进入harbor目录
[root@test local]# cd harbor
因为1.8.0以上的版本,没有了harbor.cfg配置文件,全部配置改成harbor.yml文件
[root@test harbor]# vi harbor.yml
hostname: 192.168.0.1 ====== > hostname:你服务器的IP
port:8099 ====== > port:你服务器的开放的端口
harbor_admin_password = Harbor12345 ====== > harbor_admin_password :你密码
如果是其它版本请按照下面的配置
编辑配置文件( harbor.cfg)
[root@test harbor]# vi harbor.cfg
文件内容:
Configuration file of Harbor
hostname设置访问地址,可以使用ip、域名,不可以设置为127.0.0.1或localhost,此处我设置为我私仓库服务器的IP
hostname = ip
Harbor启动后,管理员UI登录的密码,默认是Harbor12345
harbor_admin_password = Harbor12345
认证方式,这里支持多种认证方式,如LADP、本次存储、数据库认证。默认是db_auth,mysql数据库认证
auth_mode = db_auth
是否开启自注册
self_registration = on
Token有效时间,默认30分钟
token_expiration = 30
(5)Harbor启动和停止
查看Harbor依赖的镜像及启动服务如下:
查看compose状态(此命令在harbor目录下执行)
[root@test harbor]# docker-compose down -v
启动Harbor服务,执行命令
其它的Harbor命令有:docker-compose start | stop | restart
[root@VM_161_84_centos ~]# docker-compose start
[root@VM_161_84_centos ~]# docker-compose stop
[root@VM_161_84_centos ~]# docker-compose restart
(6)我们在本地登录试一试:
a,输入登录命令:
[root@docker_t ~]# docker login 192.168.0.77:8888
如果出现:
[root@docker_t ~]# docker login 192.168.0.77:8888
Username: admin
Password:
Error response from daemon: Get https://192.168.0.77:8888/v2/: http: server gave HTTP response to HTTPS client
解决方法:
在”/etc/docker/“目录下,创建”daemon.json“文件(如果有的话直接覆盖),
[root@docker_t ~]# cd /etc/docker/
[root@docker_t docker]# touch daemon.json
[root@docker_t docker]# vi daemon.json
添加下面的JSON:
重启Harbor服务
[root@test harbor]# docker-compose restart
搭建私仓库也可以看看这篇博客:https://blog.csdn.net/weixin_41465338/article/details/80146218?utm_source=blogxgwz0
或者:https://www.cnblogs.com/pangguoping/p/7650014.html
或者:https://www.cnblogs.com/kevingrace/p/6547616.html
(8)配置Harbor支持https访问
a,生成ca证书
b,获得服务器证书
c,修改v3.ext文件
[root@VM_161_84_centos certs]# cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
d,生成harbor仓库主机的证书
e,复制文件:(server.crt和server.key到/data/cert)
[root@VM_161_84_centos ~]# mkdir /data/cert
[root@VM_161_84_centos ~]# cp /usr/local/certs/server.crt /data/cert/
[root@VM_161_84_centos ~]# cp /usr/local/certs/server.key /data/cert/
f,修改harbor配置文件,如果是1.8.0+以上就修改:harbor.yml,如果是其它版本就修改:harbor.cfg
g,重启harbor
h,客户端配置harbor认证
创建存放域名证书的目录
[root@VM_161_84_centos ~]# mkdir -p /etc/docker/certs.d/192.168.0.1
[root@VM_161_84_centos ~]# cp /data/cert/server.crt /etc/docker/certs.d/192.168.0.1/
[root@VM_161_84_centos ~]# systemctl restart docker
在浏览器输入:https://192.168.0.1:8099 就会显示Harbor的用户界面
有一个要注意的是,如果你的服务器(阿里云,腾讯云,华为云)不支持https协议,请申请好这个协议再试
不然使用:https://192.168.0.1:8099就访问不了,使用:http://192.168.0.1:8099 就可以访问
https配置也可以查看这篇:https://www.cnblogs.com/wzstudy/p/10761636.html
有多种方式:
(1)下载Docker镜像
(2)直接下载jenkins.war
(3)Linux直接安装
。。。。。。。
或者查看官方的地址:https://jenkins.io/download/
(1)下载Docker镜像
a,拉取镜像
b,构建镜像(因为需要用root运行jenkins镜像,所以要重新创建授权):
请看这篇:https://blog.csdn.net/esqabc/article/details/90204429
[root@localhost tools]# touch Dockerfile
Dockerfile文件内容:
c,启动镜像:
[root@VM_161_84_centos ~]# sudo docker run -d --name jenkins -p 8888:8080 -p 50000:50000 -u root jenkins:v2.0
或者
[root@VM_161_84_centos ~]# sudo docker run -d --name jenkins -p 8888:8080 -p 50000:50000 -u root
-v /home/tools/jenkins_home:/var/jenkins_home -v /home/tools/apache-maven-3.6.1:/usr/local/maven
-v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker jenkins:v2.0
上面的命令通过-v 将本地maven目录与Jenkins容器内目录关联,方便后面构建任务时要用到
[root@docker_t ~]# docker logs -f jenkins
(3)linux直接安装
准备工具:
已经安装好JDK的linux服务器(jdk1.8)
a,yum的repo中默认没有Jenkins,需要先将Jenkins存储库添加到yum repos,执行下面的命令
[root@docker_t ~]# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
b,然后执行下面的命令,生成key
[root@docker_t ~]# rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
c,然后 安装Jenkins
d,启动jenkins
f,停止jenkins(使用强力方法)
注意:
1,如果你想修改其它端口启动,也可以在:/etc/init.d/jenkins 中修改
2,查看日志的地址:/var/log/jenkins/jenkins.log
[root@docker_t ~]# tail -f /var/log/jenkins/jenkins.log
安装前准备:
(1)因为ansible是基于python的,所以先检查是否有python,如果没有需要安装(注意版本,版本过低,也可能导致安装失败)。
(2)安装ansible前需要安装依赖包
(3)ansible安装:
(4)是否安装成功,出现下面的就算了安装成功了: