Jenkins构建若依前后端分离容器镜像
开头承接上一个文章阿里云Ubuntu20.04部署Docker环境若依框架(Vue前后端分离版),在利用Docker部署了前后端的项目后,我希望能更进一步,利用Jenkins配合Docker更进一步简化部署流程,于是整合成一篇文章,本文参考以下文章,部分脚本根据自己的项目有所调整:阿里云Ubuntu20下安装JenkinsspringBoot集成Jenkins,实现自动化部署[手把手系列之] Je
开头
承接上一个文章阿里云Ubuntu20.04部署Docker环境若依框架(Vue前后端分离版),在利用Docker部署了前后端的项目后,我希望能更进一步,利用Jenkins配合Docker更进一步简化部署流程,于是整合成一篇文章,本文参考以下文章,部分脚本根据自己的项目有所调整:
[手把手系列之] Jenkins+Docker自动化部署vue项目
一、安装Jenkins
1、安装JDK
#安装JDK8,依次执行下面的命令
sudo apt update
sudo apt install openjdk-8-jdk
#安装完成后,输入
java -version
#出现如下图版本信息,说明已经安装
2、下载Jenkins的deb文件
直接使用Jenkins官网提供的源安装命令,会比较慢,可以直接用wget命令下载deb文件
#命令类似于
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/debian-stable/jenkins_2.249.3_all.deb
3、安装Jenkins
#直接用以下命令安装,会报依赖错误,也可能会报找不到jdk的错误
dpkg -i jenkins_2.249.3_all.deb
可通过以下命令解决依赖问题,重新安装:
#解决依赖问题(据说下面这个命令得跟在上面install失败的命令后面执行,也就是先install报错了,再输入这个命令解决问题,大概是有关联关系吧)
sudo apt-get -f -y install
#解决JDK找不到的问题(刚开始用JDK11就出现JDK找不到的问题,建立软链接"ln -s <java文件安装路径> <Jenkins扫描java文件的路径>"),
ln -s /usr/local/lib/java/jdk-11.0.9/bin/java /usr/bin/java
#使用下面这个命令可以看到Java文件安装路径
type -p java
#重新安装
dpkg -i jenkins_2.249.3_all.deb
4、修改端口
我的配置文件路径是 /etc/default/jenkins,找到HTTP_PORT,修改端口
#Jenkins端口默认8080,这里改成8082不跟其他项目冲突
HTTP_PORT=8082
5、一些相关命令
#启动Jenkins
systemctl start jenkins
#关闭Jenkins
systemctl stop jenkins
#重启Jenkins
systemctl restart jenkins
#查看Jenkins状态
systemctl status jenkins
6、修改update源
(1)修改/var/lib/jenkins/hudson.model.UpdateCenter.xml文件
<url>http://mirror.xmission.com/jenkins/updates/update-center.json</url>
(2)修改/var/lib/jenkins/updates/default.json
把所有
https://updates.jenkins.io/download
替换成
https://mirrors.tuna.tsinghua.edu.cn/jenkins
记得改完后拿个链接在浏览器上试试能不能下载
二、安装maven
-
sudo apt update
-
sudo apt install maven #安装maven,默认安装路径为/usr/share/maven
-
添加maven环境配置,在/etc/profile.d文件夹下新建配置文件maven.sh
vim /etc/profile.d/maven.sh
maven.sh内容如下:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 export M2_HOME=/usr/share/maven export MAVEN_HOME=/usr/share/maven export PATH=${M2_HOME}/bin:${PATH}
-
加载环境配置
source /etc/profile.d/maven.sh
-
maven本地仓库初始化,在用户家目录下会生成一个.m2的文件夹
sudo mvn help:system
-
拷贝setting.xml到.m2文件夹下
cd ~/.m2 cp ${MAVEN_HOME}/conf/settings.xml .
-
修改settings.xml文件,配置阿里源
sudo vim settings.xml
<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>
-
测试
mvn -v
三、启动Jenkins
浏览器中输入ip+端口号就可以访问了会看到这样:
按照步骤操作
失败不要紧,重试就好
四、Jenkins部署前端项目
点击系统管理
等待安装好
选择安装nodejs版本,我自己选的是12的最后一个版本,大家选自己喜欢的就好了,但是最好不要低于12
准备一个vue项目,并上传至码云或GitHub
新建任务
这里我取的名字是前端项目,和原文不太一样,和后面的脚本有关系
我自己的Shell脚本:
echo $PATH
node -v
npm -v
npm install
npm run build:prod
echo '打包成功'
rm -r /home/fronted/dist/
cp -r /var/lib/jenkins/workspace/前端项目/dist/. /home/fronted/dist
echo '配置Docker镜像'
docker stop fronted
docker rm fronted
docker rmi fronted
cd /home/fronted/
docker build -t fronted .
docker run -d -p 80:80 -v /home/ruoyi/uploadPath:/home/ruoyi/uploadPath --name fronted fronted
echo '部署镜像成功'
上面的脚本大致流程就是拉去后进行build操作,打包好后删除原有目录的文件,将打包好的复制过去,然后提供Dockerfile文件进行打包容器
Dockerfile:
FROM nginx
USER root
ADD default.conf /etc/nginx/conf.d
ADD dist /usr/share/nginx/html/
RUN chmod 775 -R /usr/share/nginx/html
expose 80
default.conf
server {
listen 80;
server_name IP; # 可以用服务器ip代替
location / {
root /usr/share/nginx/html/;
index index.html index.htm index login;
}
location /prod-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://IP:PORT/; # 可以用服务器ip代替
}
# 这个是我自己部署的图片静态资源,可以不加
location /profile {
alias /home/ruoyi/uploadPath;
autoindex on;
}
}
构建项目
点击立即构建
等待部署
点击这个小圆可以看控制台输出
部署成功就可以访问了
五、Jenkins部署后端项目
进入Jenkins后,添加任务
选取maven项目,如果没有maven项目的话,可以去插件管理中去下载,在集成这部分前,服务器上要安装好git,maven,git版本最好大于1.7,以及jdk,然后在Jenkins中的全局工具配置中配置jdk以及maven的路径,我的路径是在/usr/lib/jvm
下,可以参考ubuntu下查找jdk安装位置这篇文章进行查找,如果你和我的系统JDK版本都一样就在差不多的位置了
创建完任务后:进入任务配置
Jenkins将代码从你配的分支上拉下来,然后copy到指定执行的文件夹内,然后执行启动,shell脚本,这里是我的Shell脚本,根据之前一篇文章构建的阿里云Ubuntu20.04部署Docker环境若依框架(Vue前后端分离版):
Shell
echo '打包成功,开始复制文件'
rm -r /home/ruoyi/ruoyi-admin.jar
cp -r /var/lib/jenkins/workspace/后端项目/ruoyi-admin/target/ruoyi-admin.jar /home/ruoyi
echo '构建镜像'
docker stop backend
docker rm backend
docker rmi backend
cd /home/ruoyi/
docker build -t backend .
docker run -d -p 8080:8080 -v /home/ruoyi/uploadPath:/home/ruoyi/uploadPath --name backend backend
echo '构建成功'
大致意思就是删除旧的构建,将Jenkins打包好的jar文件复制到指定的位置,这个后端项目是我的Jenkins的项目名称,每个人的都不一样,然后使用Dockerfile构建镜像并运行
最后保存这个配置
最后一步,点击立即构建即可
六、一些问题
遇到jenkins构建出现permission-denied
1.修改jenkins的用户与组
cd /var/lib
chown -R root:root jenkins
# 重启jenkins服务
service jenkins restart
2.将Jenkins加入sudoers中
查看用户组:cat /etc/group
查看用户:cat /etc/shadow
查看用户所属组:groups 用户名
将用户加到某一个组中:adduser 用户名 组名
创建用户:sudo adduser howe
安装提示输入密码即可;
删除用户:sudo userdel howe
使用visudo将用户加到sudoers中去
只有root用户才能使用visudo,因此先执行sudo su切换到root用户下;
sudo su
visudo
再root ALL=(ALL:ALL) ALL下一行加上对应用户
如howe ALL=(ALL:ALL) ALL
按照提示保存即可;保存的文件名就是/etc/sudoers.tmp
尽量不要去直接修改/etc/sudoers文件
因为/etc/sudoers是只读文件,更改权限(chmod)可能对系统造成影响;
删除某些文件夹下的文件会报权限不足:
切换至root用户,对这个文件夹chmod 777 文件夹
就可以了
更多推荐
所有评论(0)