Docker + Jenkins实战笔记
该文章主要利用 Docker + Jenkins 来自动化部署发布前后端分离项目。利用 Gitee 自动拉取最新代码,自动将 SpringBoot 项目打成的WAR包和前端 Vue 自动打包发布到 tomcat 与 Nginx 下运行。
前言
该文章主要利用 Docker + Jenkins 来自动化部署发布前后端分离项目。利用 Gitee 自动拉取最新代码,自动将 SpringBoot 项目打成的WAR包和前端 Vue 自动打包发布到 tomcat 与 Nginx 下运行。
若你还没有安装 Docker 话,可以参考该文章:【Java篇】Docker怎么玩?
提示:以下是本篇文章正文内容,下面案例可供参考
一、安装Node.js
1.准备好文件
下载Node安装包,在 usr/local 下新建名为 jenkins 文件,在 jenkins 下新建 jenkins_home 文件。将压缩包放到 jenkins 文件夹中,与 jenkins_home 文件夹同级,解压压缩包并修改名字为 node,请参考下图
注释:文件夹及 node 名字随意,自己定义即可!
2.解压
命令如下(参考):
[root@VM-0-2-centos jenkins]# tar xf node-v12.18.1-linux-x64.tar.xz
[root@VM-0-2-centos jenkins]# ls
node-v12.18.1-linux-x64 node-v12.18.1-linux-x64.tar.xz
[root@VM-0-2-centos jenkins]# mv node-v12.18.1-linux-x64 node
[root@VM-0-2-centos jenkins]# ls
node node-v12.18.1-linux-x64.tar.xz
[root@VM-0-2-centos jenkins]# cd node
[root@VM-0-2-centos node]# ls
bin CHANGELOG.md include lib LICENSE README.md share
3.环境变量配置
命令如下(参考):
vi /etc/profile
#你自己的路径
export PATH=:usr/local/bin:{JAVA_HOME}/bin:/usr/local/jenkins/jenkins_home/ambient/node/bin:$PATH
4.编辑完成wq保存,查看node版本
命令如下(参考):
source /etc/profile #更新环境变量
[root@VM-0-2-centos node]# node -v
v12.18.1
5.切换为淘宝镜像
命令如下(参考):
[root@VM-0-2-centos node]# npm config set registry http://registry.npm.taobao.org/
二、配置Maven
1.准备maven
将 maven 也用 ftp 传到 jenkins 文件夹下,参考上面第一张图片,然后开始配置路径
命令如下(参考):
[root@VM-0-2-centos node]# vi /etc/profile
# 拉到最下面,编写配置(参考)
export PATH=${PATH}:${MAVEN_HOME}/bin
export MAVEN_HOME=/usr/local/jenkins/jenkins_home/ambient/apache-maven-3.8.3 #你自己的路径
export PATH=${PATH}:${MAVEN_HOME}/bin
# wq保存,更新环境变量
[root@VM-0-2-centos node]# source /etc/profile
[root@VM-0-2-centos node]# mvn -v #查看maven版本
注释:提示没有权限(参考下方命令)!!!
2.无权限报错解决方法
命令如下(参考):
-bash: /usr/local/jenkins/apache-maven-3.8.3/bin/mvn: Permission denied
# 设置权限,你自己的路径
[root@VM-0-2-centos node]# chmod a+x /usr/local/jenkins/apache-maven-3.8.3/bin/mvn
[root@VM-0-2-centos node]# mvn -v #再次查看
Apache Maven 3.8.3 (ff8e977a158738155dc465c6a97ffaf31982d739)
Maven home: /usr/local/jenkins/apache-maven-3.8.3
Java version: 1.8.0_321, vendor: Oracle Corporation, runtime: /usr/local/java/jdk1.8.0_321/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1127.19.1.el7.x86_64", arch: "amd64", family: "unix"
三、安装nginx
1.docker下载nginx
注释:不指定版本则会下载最新版
docker pull nginx
2.运行(建议直接查看下方 3启动挂载命令)
docker run -d --name nginx -p 80:80 nginx
安装参考地址:https://blog.csdn.net/huangjhai/article/details/118854733
安装vim参考地址:https://www.jianshu.com/p/cfc2377b8611
3.启动挂载
docker run --name nginx -d -p 80:80 -v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/nginx/vue:/usr/share/nginx/html -v /usr/local/nginx/log:/var/log/nginx nginx
4. 设置容器自动启动
docker update --restart=always nginx
5.Nginx配置文件参考
user root;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
server {
listen 80;
server_name www.plmn.club;
location / {
root /usr/share/nginx/html;
#autoindex on;
index index.html index.htm;
}
# 配置反向代理,解决跨域问题
location /plmn {
proxy_pass http://www.plmn.club:8081/plmn;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
server {
listen 8099;
server_name jenkins;
# 解决Jenkins下载超慢问题,利用Nginx代理
location /download/plugins {
proxy_pass http://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins;
}
}
}
四、安装Jenkins
本次我们演示的是通过 Docker 来拉取 Jenkins 镜像完成操作,不需要的同学可以自己去网上下载 Jenkins 压缩包,手动安装运行(不依赖Docker)
1.利用Docker拉取Jenkins镜像
命令如下(参考):
[root@VM-0-2-centos log]# docker pull jenkins/jenkins:2.326
2.准备文件
在 usr/local/jenkins 目录下创建文件夹:jenkins_home(已创建可忽略)
3.启动
执行启动命令,限制内存大小,启动后文件会挂载到容器(请直接可以参考下方 三.14 yml文件)
命令如下(参考):
[root@VM-0-2-centos node]# docker run --restart=always -d -p 8099:8080 -e JENKINS_JAVA_OPTIONS="-XX:MaxPermSize=1024m -D java.awt.headless=true" -v /usr/local/jenkins/jenkins_home/:/var/jenkins_home/ -v /usr/local/jenkins/apache-maven-3.8.3:/usr/local/apache-maven-3.8.3 -v /usr/local/jenkins/node:/usr/local/node -u0 --env JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m" --name=jenkins jenkins/jenkins:2.326
docker ps 看一下启动状态即可
4.进入Jenkins容器
命令如下(参考):
[root@VM-0-2-centos node]# docker exec -it eb957f199f67 /bin/bash
由于容器只有核心的运行环境,没有完整的运行系统,所以需要执行以下命令
命令如下(参考):
apt-get update
apt-get install vim
#由于国外镜像比较慢,我们使用下面的方法安装,已经开始安装的话直接按下Ctrl + C退出
① cp /etc/apt/sources.list /etc/apt/sources.list.bak
② echo 'deb http://mirrors.163.com/debian/ stretch main non-free contrib' > /etc/apt/sources.list
echo 'deb http://mirrors.163.com/debian/ stretch-updates main non-free contrib' >> /etc/apt/sources.list
echo 'deb http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib' >> /etc/apt/sources.list
③ apt-get update
④ apt-get install libssl-dev
⑤ apt-get install -y libtinfo5 --allow-remove-essential
⑥ apt-get install -y vim
exit 可退出容器
5.登录Jenkins控制台
浏览器访问已启动的容器:IP+端口,等待初始化,密码获取:
命令如下(参考):
cat /usr/local/jenkins/jenkins_home/secrets/initialAdminPassword #自己的路径
6.在客户端安装Jenkins插件
- Localization: Chinese (Simplified)
- Maven Integration plugin
- Pipeline
- Publish Over SSH
- Subversion Workspace
- Cleanup Plugin
- Folders
- Gitee
7.初始化慢,插件安装慢?
命令如下(参考):
需要你进入jenkins 的工作目录,打开-----hudson.model.UpdateCenter.xml将 url 中的
https://updates.jenkins.io/update-center.json
更改为https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
是国内的清华大学的镜像地址。
或者更改为http://updates.jenkins.io/update-center.json,即去掉 https 中的 s
8.上条步骤不是解决下载慢的终极办法,利用Nginx代理做
9.配置中文
https://blog.csdn.net/zh__quan/article/details/106230100
10.配置Gitee及测试运行
网友总结教程:https://blog.csdn.net/liqing0013/article/details/98031485
官网教程:https://gitee.com/help/articles/4193#article-header10
11.docker-compose参考(Jenkins配置JDK、NodeJS时需要挂载,否则找不到配置路径)
命令如下(参考):
version: "3.8"
services:
redis: # 服务的名称
restart: always # 代表只要Docker启动,那么这个容器就跟着一起启动
image: daocloud.io/library/redis:6.0.4 # 指定镜像路径
container_name: redis # 指定容器名称
command: redis-server --port 6379 --requirepass Glf924058449/ --appendonly yes
ports:
- 6379:6379 # 指定端口号的映射
tomcat:
restart: always # 代表只要Docker启动,那么这个容器就跟着一起启动
image: daocloud.io/library/tomcat:9.0.0.M27 # 指定镜像路径
container_name: tomcat # 指定容器名称
ports:
- 8081:8081
volumes:
- /usr/local/tomcat/packge:/usr/local/tomcat/webapps
- /usr/local/tomcat/conf/server.xml:/usr/local/tomcat/conf/server.xml
- /usr/local/tomcat/conf/web.xml:/usr/local/tomcat/conf/web.xml
- /usr/local/tomcat/log:/usr/local/tomcat/logs # 映射数据卷
jenkins:
restart: always # 代表只要Docker启动,那么这个容器就跟着一起启动
image: jenkins/jenkins:2.326 # 指定镜像路径
container_name: jenkins # 指定容器名称
user: root
ports:
- 8099:8080
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /usr/local/jenkins/jenkins_home/:/var/jenkins_home/
- /usr/local/jenkins/apache-maven-3.8.3:/usr/local/apache-maven-3.8.3
- /usr/local/jenkins/node:/usr/local/node
- /usr/local/java/jdk1.8.0_321:/home/java/jdk8:rw
12.配置运行Tomcat(利用发布Maven项目配合Tomcat完成后端war包自动化部署)
https://www.cnblogs.com/xuxiaojian/p/9079132.html
注意:所有配置文件,比如tomcat的conf,建议先启动一个空容器,把conf的内容复制到你的宿主机任意地方,然后删除掉容器,这样在你挂载容器配置文件的时候就可以避免发生错误!!!
五、Jenkins所有配置参考
1.Jenkins:系统配置
2.Jenkins:全局工具配置
3.前端配置运行Nginx实现自动化部署:配置文件
4.后端配置运行Tomcat实现自动化部署:配置文件
总结
以上就是Docker + Jenkins实战笔记,本文仅仅简单介绍了 Jenkins 及所需环境的安装、配置,比较粗造,而过程中可能会碰到很多问题,可以在下方评论区留言或者自行百度,祝你成功!!!
更多推荐
所有评论(0)