使用docker命令拉取Jenkins镜像
docker pull jenkins/jenkins:lts
docker images查看镜像是否拉取成功
创建Jenkins映射目录
sudo mkdir -p /docker/jenkins/jenkins/jenkins_home
#注意:这里的目录jenkins_home一定要给读写权限,否则容器内部文件映射不出到宿主机导致无法启动容器
启动Jenkins
docker run -d -p 9700:8080 -p 50000:50000 \
-v /docker/jenkins/jenkins/jenkins_home:/var/jenkins_home \
-v /etc/localtime:/etc/localtime \
-v /usr/bin/docker:/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock \
-e TZ=Asia/Shanghai \
--restart=on-failure \
--name jenkins jenkins/jenkins:lts
登录Jenkins
http://你的IP:90
这里的密码可以查看你的Jenkins日志获取,也可以在我们刚才映射的目录下获取
我这里查看刚才映射的目录获取
cat /docker/jenkins/jenkins/jenkins_home/secrets/initialAdminPassword
安装插件
这里很多插件会爆红,但是不影响,等会更新一下更新中心就可以了
创建用户,也可以直接使用admin继续登录
开始使用Jenkins
更改更新中心地址
将中心镜像改为(亲测可用)
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
安装插件
系统管理>>>>>插件管理
由于我们的项目需要用到gitlab、git、gradle、nodejs,所以我们需要安装这四个插件
gitlab是代码仓库。git拉取代码工具、gradle为打包java的插件,nodejs为打包vue前端工具
点击第三个表示是已安装的插件,只要选择后缀带有Plugin的安装即可,这里我就不一一列举
全局配置刚才我们安装的插件
nodejs跟gradle一样选择自动安装,这里安装不会在宿主机安装,是在Jenkins内部的,选择完之后点击《保存》即可
部署vue前端
新建任务>>>新建任务>>>构建一个自由风格的软件项目
仓库地址就是你的gitlab代码的地址
登录你的gitlab仓库找到代码仓库,使用http克隆这个地址粘贴到上面的仓库项目地址里面
配置nodejs
build构建,这里选择执行shell
在你的/docker/jenkins/jenkins/jenkins_home/workspace/vue目录下创建nginx的配置文件、Dockerfile、vue.sh脚本
sudo vim default.conf
server {
listen 80;
server_name 你本机IP;
location / {
root /usr/share/nginx/html;
try_files $uri $uri/ /index.html last;
index index.html;
}
location /api/ {###这里的/api/指的是前端只要有xxxx.api的时候匹配到/api/就转发到后端
proxy_pass http://java程序IP+端口/;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
}
}
创建dockerfile
sudo vim Dockerfile
#使用官方 nginx 镜像作为基础镜像
FROM nginx:latest #使用nginx镜像
EXPOSE 80 ##端口镜像端口映射为80,可以随便改
COPY dist/ /usr/share/nginx/html #将当前目录下的dist目录复制到nginx的html目录
ADD default.conf /etc/nginx/conf.d #将本地目录的nginx配置文件映射到容器内部的nginx
创建vue.sh整合打包部署容器
sudo vim vue.sh
#!/bin/bash
# 强制删除名为 vue 的容器(如果存在)
docker rm -f vue 2>/dev/null
# 删除名为 vue:v1 的镜像(如果存在)
docker rmi -f vue:v1 2>/dev/null
# 构建名为 vue:1 的镜像
docker build -t vue:1 .
# 运行 vue:v1 镜像
docker run -d --name vue -p 80:80 vue:1
# 查看镜像并输出结果
if docker ps | grep vue; then
echo "容器创建成功"
else
echo "容器创建失败"
fi
给脚本权限
sudo chmod 755 vue.sh
这里就可以保存了,点击立即购构建
部署java后端
新建任务>>>>给任务一个名称,叫什么随便你,这里创建之后会在
/docker/jenkins/jenkins/jenkins_home/workspace目录下
前面构建跟vue一样的配置
这里的URL是你后端代码的仓库地址,一样选择http的方式,凭据因为刚才已经填过了,所以这里还会有显示,我们点击选择就好
执行脚本,该脚本必须为于当前打包目录下,也就是你的项目名称下的目录,不能放在打jar包的目录,否则会被自动删除,脚本在后面提供
最后保存构建项目
打包好的jar包在这里
/你创建Jenkins时候映射的目录/jenkins_home/workspace/你刚才起的项目名称/build/libs/
在刚才创建的工程目录下写Dockerfile
sudo vim Dockerfile
#####################################
# 使用 JDK 21 的基础镜像
FROM openjdk:21-jdk
# 设置工作目录
WORKDIR /app
# 将 JAR 文件复制到容器中
COPY java.jar /app/java.jar
# 暴露端口 8081
EXPOSE 8081
# 设置容器启动命令
ENTRYPOINT ["java", "-jar", "java.jar"]
##############################################
编写一个shell脚本用来执行创建容器命令
sudo vim java.sh
#################################################3
#!/bin/bash
# 强制删除名为 java 的容器(如果存在)
docker rm -f java2 2>/dev/null
# 删除名为 java2:v1 的镜像(如果存在)
docker rmi -f java2:1 2>/dev/null
# 构建名为 java2:1 的镜像
docker build -t java2:1 .
# 运行 java2:v1 镜像
docker run -d --name java2 -p 8020:8010 java2:1
# 查看镜像并输出结果
if docker ps | grep java2; then
echo "容器创建成功"
else
echo "容器创建失败"
fi
############################################################
前后端部署完毕,小编踩了很多坑,有不懂的可以后台私信,我会的我就告诉你,至于为什么没有数据库,数据库一般都是提前部署好的,开发跟前端代码里就已经指定好数据库的IP等信息了,如果你是一个人,那你可以这样部署MySQL
docker run -d \
--name mysql \
--restart always \
--privileged=true -p 3306:3306 \
-v /docker/mysql/data:/var/lib/mysql \
-v /docker/mysql/conf:/etc/mysql/conf.d \
-v /docker/mysql/1ogs:/var/1og/mysq1 \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:8.0