Docker实现springboot+jenkins+gitlab自动化部署

视频版本在 springboot-jenkins-gitlab自动化部署1_哔哩哔哩_bilibili

环境:

  • win安装虚拟机 版本:centos7

  • 服务器必须 内存4G 以上

所需知识

  • centos7

  • jdk8

  • maven3

  • docker

  • gitlab

  • jenkins

步骤:

  1. 安装jdk8

  2. 安装maven(也可以在 docker 中的jenkins 安装)

  3. 安装docker

  4. 配置docker

  5. 在docker 中安装 jenkins

  6. 在docker 中安装 gitlab

  7. 配置自动化部署

1. 安装jdk8

先查询当前虚拟机是否配置了jdk

java -version

如果没有配置, 下载安装

yum install java-1.8.0-openjdk-devel

配置环境变量

 vim /etc/profile

打开 /etc/profile 把下面的 配置复制到最后

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.el7_9.x86_64
 
export JRE_HOME=${JAVA_HOME}/jre
 
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
 
export PATH=${PATH}:${JAVA_HOME}/bin

刷新配置文件

source /etc/profile

再次查询版本

java -version

2. 安装maven(也可以在 docker 中的jenkins 安装)

官网下载地址

Maven – Maven Releases History

最好和我一样下载 3.6.2及以下

不要下载最新版本(3.9), 因为我 maven 下载镜像仓库配置的是 aliyun, 导致一些插件下载有问题

image-20230926155241063

image-20230926155235575

image-20230926155211838

image-20230926155203307

安装

安装目录
mkdir -p /data/maven/apache-maven-3.6.2

安装的位置最好不要变动, 因为会影响到jenkins中 容器挂载的一些参数

cd /data/maven/apache-maven-3.6.2
解压
tar -zxvf apache-maven-3.6.2-bin.tar.gz 

配置环境变量
 vim /etc/profile

打开 /etc/profile 把下面的 配置复制到最后

export M2_HOME=/data/maven/apache-maven-3.6.2
export CLASSPATH=$CLASSPATH:$M2_HOME/lib
export PATH=$PATH:$M2_HOME/bin
刷新配置文件
source /etc/profile

查询版本
mvn -v

配置setting.xml

cd /data/maven/apache-maven-3.6.2/conf/
​
vim  settings.xml

主要是配置 本地maven仓库和远程maven仓库

 <localRepository>/data/maven/mavenData</localRepository>
    <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>central</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>

image-20230926155157340

image-20230926155152431

完整文件

可以直接复制粘贴

记得更改 localRepository 或者创建 /data/maven/mavenData 文件夹 作为本地maven仓库

<?xml version="1.0" encoding="UTF-8"?>
​
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
 <localRepository>/data/maven/mavenData</localRepository>
  <pluginGroups>
  </pluginGroups>
  <proxies>
  </proxies>
  <servers>
  </servers>
  <mirrors>
​
    <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>central</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
  </mirrors>
  <profiles>
​
  </profiles>
</settings>

3. 安装docker

yum安装gcc相关

yum -y install gcc
yum -y install gcc-c++

安装需要的软件包

yum install -y yum-utils

设置stable镜像仓库

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新yum软件包索引

yum makecache fast

下载 docker

yum -y install docker-ce docker-ce-cli containerd.io

启动docker

systemctl start docker

设置开机启动

systemctl enable docker

测试

docker version
docker run hello-world

常用命令

#启动docker
systemctl start docker
#停止docker
systemctl stop docker
#查询docker 状态
systemctl status docker
# 查询镜像容器占用的空间
docker system df
​
# 查询镜像
docker images
# 删除镜像
docker rmi 镜像id
# 下载镜像
docker pull 镜像名称
​
# 新建 + 启动容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
# 进入容器内部
docker exec -it 容器id/容器名 /bin/bash
# 启动容器
docker start 容器id/容器名
# 停止容器
docker stop 容器id/容器名
​
​
# 查询运行中的容器
docker ps 
# 删除容器
docker rm 容器别名/容器id
# 强制删除容器
docker rm 容器别名/容器id
# 查询停用的容器
docker ps -qf status=exited

4.配置docker

设置阿里云镜像加速

阿里云网址

结果

执行下面代码

注意 https://1uqry4vp.mirror.aliyuncs.com 这是我的镜像地址, 请使用自己的

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://1uqry4vp.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

图片步骤

image-20230926155142252

image-20230926155136854

image-20230926155130240

执行 红框中的文字

就完成了 配置

5. 在docker 中安装 jenkins

下载镜像

docker pull jenkins/jenkins:2.346.1

运行容器

docker run -p 8091:8080 \
-u root --privileged=true --name jenkins -d \
--restart always \
-v /data/jenkins/jenkins_home:/var/jenkins_home \
-v /data/maven:/data/maven \
-v  /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-1.el7_9.x86_64:/data/jdk8  \
-v /usr/share/javazi-1.8:/usr/share/javazi-1.8 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $(which docker):/usr/bin/docker \
jenkins/jenkins:2.346.1

-v /var/run/docker.sock:/var/run/docker.sock

-v $(which docker):/usr/bin/docker

挂载docker运行变量到容器,否则无法在容器内使用docker命令

进入容器
docker exec -it jenkins /bin/bash
查看密码
cat /var/jenkins_home/secrets/initialAdminPassword

报错

touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?

解决

chown -R 1000 路径

url
http://192.168.2.203:8091/

下载插件

方法1

可能因为网络关系导致下载插件失败

可以直接使用我提供的

网盘地址

下载完成后 停止 jenkins ,

进入 jenkins_home\plugs

把我的plugs 替换 原先的 plugs

方法2
第一步:

系统管理->插件管理->高级->升级站点

url 从 https://updates.jenkins.io/update-center.json

改为 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

image-20230926155118687

第二步:

在docker容器中 使用下面命令

cd  /jenkins_home/updates
sed -i 's#updates.jenkins.io/download/plugins#mirrors.tuna.tsinghua.edu.cn/jenkins/plugins#g' default.json
sed -i 's#www.google.com#www.baidu.com#g' default.json

如果重启jenkins 后此次替换失效

也可以通过nginx 代理去解决

配置

设置jenkins 环境变量
JAVA_HOME
/data/jdk8

M2_HOME
/data/maven/apache-maven-3.6.2

PATH+EXTRA
$M2_HOME/bin

添加jdk.maven

路径:系统设置 -> 全局工具设置->

image-20230926155314250

image-20230926155320833

如果要把打包好的jar/war 包 放入tomcat 中, 需要 安装 Deploy to container插件

问题:

时区问题

参考链接

系统管理->脚本命令行
System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')

对已经运行的容器修改挂载文件

点击跳转

cd /var/lib/docker/containers/containers_id
修改下面两个文件  config.v2.json  hostconfig.json
systemctl restart docker

注意:要重启docker服务,否则修改的配置文件无效,会被还原

docker start containers_id

构建maven项目时报错

Failed to create parent directories for tracking file /etc/maven/apa

没有权限导致的

递归设置 maven仓库 的目录权限

chmod -R 777 /etc/maven/

java.security.InvalidAlgorithmParameterException

Downloading from nexus-aliyun:`[`http://maven.aliyun.com/nexus/content/groups/public/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom`](http://maven.aliyun.com/nexus/content/groups/public/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom)`[INFO] ------------------------------------------------------------------------[INFO] BUILD FAILURE[INFO] ------------------------------------------------------------------------[INFO] Total time:  2.042 s[INFO] Finished at: 2023-09-18T13:23:26Z[INFO] ------------------------------------------------------------------------ [ERROR] Plugin org.apache.maven.plugins:maven-clean-plugin:2.5 or one of its dependencies could not be resolved:Failed to read artifact descriptor for org.apache.maven.plugins:maven-clean-plugin:jar:2.5:Could not transfer artifact org.apache.maven.plugins:maven-clean-plugin:pom:2.5from/to nexus-aliyun (`[`http://maven.aliyun.com/nexus/content/groups/public`](http://maven.aliyun.com/nexus/content/groups/public)`): Unexpected error:java.security.InvalidAlgorithmParameterException:the trustAnchors parameter must be non-empty -> [Help 1]

添加maven 参数

-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true

6. 在docker 中安装 gitlab

下载镜像

docker pull gitlab/gitlab-ce:latest

运行容器

docker run -d -p 8443:443 -p 8090:80 -p 8022:22 \
--restart always --name gitlab \
-v /data/gitlab/etc:/etc/gitlab \
-v /data/gitlab/log:/var/log/gitlab \
-v /data/gitlab/data:/var/opt/gitlab \
--privileged=true gitlab/gitlab-ce:latest

配置

1.进入容器
docker exec -it gitlab /bin/bash

2.修改gitlab.rb文件
vi /etc/gitlab/gitlab.rb
external_url 'http://192.168.2.203'

http://192.168.2.203 是你的服务器地址

3.配置gitlab.yml文件

// 文件路径 /opt/gitlab/embedded/service/gitlab-rails/config

vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml

//修改host 与上面.rb文件修改的一致 // 修改port 为 8090

image-20230926155104625

4.重启服务

注:此命令为容器内重启服务命令

gitlab-ctl restart

gitlab地址

http://192.168.2.203:8090/

问题

访问502

一般为服务器配置不达标所致

建议升级配置

谨慎参考 :我发现一个规律, 我的gitlab 服务, 刚启动时 cpu 占比很高, 过了 10分钟后, 就会低下去, 这时候再去访问就不会502了

忘记密码

# 进入容器内部
docker exec -it gitlab /bin/bash
 
# 进入控制台
gitlab-rails console -e production
 
# 查询id为1的用户,id为1的用户是超级管理员
user = User.where(id:1).first
# 修改密码 至少8位
user.password='新密码'
# 保存
user.save!
# 退出
exit

账号为 root 密码为 新密码

7. 配置自动化部署

jenkins

需要安装的插件

gitlab

1.图片教程

image-20230926155057175

image-20230926155048685

image-20230926155043345

image-20230926155031543

image-20230926155410006

image-20230926155415410

2.参数配置文件

脚本配置
Pre Steps
Execute shell
mvn clean package  -Dmaven.test.skip=true

Post Steps
Execute shell
cd /var/jenkins_home/workspace/auto-meeting-demo
docker stop meeting-demo || true
docker rm meeting-demo || true
docker rmi meeting-demo || true
docker build -t meeting-demo .
docker run -d -p 8088:8088 --name meeting-demo meeting-demo:latest

Dockerfile

在项目的根路径下创建 Dockerfile 文件

文件内容如下

# 基础镜像
FROM openjdk:8
# 维护人
MAINTAINER shenchen<17786925624@163.com>
# 创建目录
RUN mkdir -p /data/app
#指定挂载目录
VOLUME /tmp
# 拷贝项目jar
ADD  target/meeting-demo-1.0.1-SNAPSHOT.jar /data/app/meeting-demo.jar
# 执行命令启动jar
ENTRYPOINT ["java","-jar","/data/app/meeting-demo.jar"]
# 暴露端口
EXPOSE 8088

image-20230926154957246

gitlab

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值