0

0

Gitlab-runner+Docker怎么实现自动部署SpringBoot项目

王林

王林

发布时间:2023-05-20 18:55:20

|

2114人浏览过

|

来源于亿速云

转载

1.环境要求

以下服务器的操作系统均为centos7

  • 服务器A:Gitlab

  • 服务器B:GitlabRunner、Docker、docker-compose、Java1.8、maven3.6.3、git

ps:这里可以把服务器B的GitlabRunner、Java1.8、maven3.6.3、git单独提出来,独立部署,需要java的原因是maven,maven用于打包。

为了方便演示,应用服务器B只需要使用docker和docker-compose即可。

相关服务搭建教程参照官方文档或其他第三方靠谱博客教程!

当前我的服务版本

  • Gitlab:14.9

  • GitlabRunner:14.10.0

  • docker:20.10.14

  • docker-compose:1.29.2

  • Git:2.31.1 ,事先检查下Git是否最新版本,否则后面会出错。

2.主要流程

我们的主要流程就是通过Gitlab管理代码,然后利用Gitlab自带的Gitlab CI/CD功能与GitlabRunner进行注册绑定。

一旦绑定成功,每次提交代码都会激活GitlabRunner,并执行相应的脚本程序以自动部署。

Gitlab-runner+Docker怎么实现自动部署SpringBoot项目

3.GitlabRunner 安装和注册

3.1 安装

总结一共就2个步骤:

1.添加gitlab官方库:

For Debian/Ubuntu/Mint

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash

For RHEL/CentOS/Fedora

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash

2.命令安装:

For Debian/Ubuntu/Mint

sudo apt-get install gitlab-ci-multi-runner

For RHEL/CentOS/Fedora

sudo yum -y install gitlab-ci-multi-runner

3.2 开始注册

1.打开Gitlab需要自动部署的仓库,选择Setting-》CI / CD -》Runners。

Gitlab-runner+Docker怎么实现自动部署SpringBoot项目

2.如下图,可以看到最关键的两个信息,这俩待会GitlabRunner注册的时候会用到.

Gitlab-runner+Docker怎么实现自动部署SpringBoot项目

3.GitlabRunner注册:

基本命令:

  • 注册:gitlab-runner register

  • 查看已注册Runner:gitlab-runner list

  • 取消所有注册:gitlab-runner unregister --all-runners

回到服务器B,执行命令gitlab-runner register 注册流程详解:

Gitlab-runner+Docker怎么实现自动部署SpringBoot项目

  • Enter the GitLab instance URL (for example, https://gitlab.com/):
    输入gitlab的服务URL

  • Enter the registration token:
    输入令牌,参考上图

  • Enter a description for the runner:
    输入Runner描述

  • Enter tags for the runner (comma-separated)

给这个gitlab-runner输入一个标记,这个tag非常重要,在后续的使用过程中需要使用这个tag来指定gitlab-runner(yml文件,job通过设置tags标签选用指定的Runner)

  • Enter optional maintenance note for the runner:
    输入可选维护说明

    Autoppt
    Autoppt

    Autoppt:打造高效与精美PPT的AI工具

    下载
  • Enter an executor: docker+machine, docker-ssh+machine, custom, docker-windows, docker-ssh, ssh, kubernetes, docker, parallels, shell, virtualbox:

回车结束,安装gitlab-runner文件夹下会自动生成config.

回到gitlab后台Runner设置处,刷新页面就可以看到新增的一个Runner:

Gitlab-runner+Docker怎么实现自动部署SpringBoot项目

4.制作脚本! 重要!!!

当提交代码后,我们应该怎么用Shell脚本来控制构建和部署呢?Gitlab为我们提供好了一个模版,就是在仓库根目录下创建名为:.gitlab-ci.yml 文件

这里以一个springboot项目为例子,在原项目基础上增加了3个文件(.gitlab-ci.yml 、Dockerfile 、docker-compose.yml),下面展示了文件的位置和内容,内容根据你的需求修改就行了,需要熟悉Dockerfile 和 docker-compose.yml的一些基础文件结构及语法:

3个文件位置图

Gitlab-runner+Docker怎么实现自动部署SpringBoot项目

.gitlab-ci.yml

stages:
  - build
  - deploy_dev
  - clean
# 打包镜像
build:
  stage: build
  only:
    - dev
  script:
    - $MAVEN_HOME/bin/mvn clean package '-Dmaven.test.skip=true'
    - cp ./XXX/target/XXX.jar docker/
    - cd docker
    - docker build -t dev/XXX:v1.0.0 .
  tags:
    - maven
# 部署开发服务器
deploy_dev:
  stage: deploy_dev
  only:
    - dev
  script:
    - cd docker
    - docker-compose down
    - docker-compose up -d
  tags:
    - maven
#清理虚悬镜像
clean:
  stage: clean
  only:
    - dev
  script:
    - docker rmi $(docker images -q -f dangling=true)
  tags:
    - maven

在根目录中创建Docker文件夹,

创建Dockerfile:

#FROM java:8 #java:8这个镜像体积有643MB,打包镜像后体积太大了,不建议使用
# openjdk:8-jre-alpine 体积最小,只有85MB
FROM openjdk:8-jre-alpine
# 以下2个RUN解决 java验证码接口报错的问题,
RUN echo -e "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.4/main\n\
https://mirror.tuna.tsinghua.edu.cn/alpine/v3.4/community" > /etc/apk/repositories
RUN apk --update add curl bash ttf-dejavu && \
      rm -rf /var/cache/apk/*
COPY . /opt/app
WORKDIR /opt/app

创建docker-compose.yml :

version: '3.1'
services:
  education-course:
    container_name: dev-XXX-server
    restart: always
    image: dev/XXX:v1.0.0
    network_mode: "host"
    volumes:
      - /opt/XXX-server/logs:/XXX/logs
    command: java -jar -Xms1024m -Xmx1024m -Duser.timezone=GMT+08 xxx.jar --spring.profiles.active=dev

5.测试

本地idea提交一次代码到dev分支,可以到已经在跑了

Gitlab-runner+Docker怎么实现自动部署SpringBoot项目

点进去看,出现问题

Gitlab-runner+Docker怎么实现自动部署SpringBoot项目

Gitlab-runner+Docker怎么实现自动部署SpringBoot项目

这里提示我们的git版本太低了

当前git版本:

[root@localhost local]# git --version
git version 1.8.3.1

升级最新版git后:

[root@localhost yum.repos.d]# git --version
git version 2.24.4

回到gitlab后台,这里手动再执行一次:

Gitlab-runner+Docker怎么实现自动部署SpringBoot项目

最新的一次已通过 passed:

Gitlab-runner+Docker怎么实现自动部署SpringBoot项目

查看日志的方法,进第一个build查看日志,获取项目的路径(大家有更好的方法可以告诉下我)

Gitlab-runner+Docker怎么实现自动部署SpringBoot项目

Gitlab-runner+Docker怎么实现自动部署SpringBoot项目

cd到 项目的docker目录,使用

docker-compose logs -ft

测试接口:

Gitlab-runner+Docker怎么实现自动部署SpringBoot项目

6.常见问题

问题1:自动化部署build报错:

Gitlab-runner+Docker怎么实现自动部署SpringBoot项目

解决方法,执行命令:

sudo chmod 777 /var/run/docker.sock

问题2:docker apline temporary error (try again later) 错误
没有dns导致的

在本机系统上创建daemon文件添加dns,然后重启docker

vim /etc/docker/daemon.json
{
"dns": ["8.8.8.8"]
}
sudo service docker restart

相关专题

更多
高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

68

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

127

2026.01.16

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

54

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

39

2026.01.15

Java音频处理教程汇总
Java音频处理教程汇总

本专题整合了java音频处理教程大全,阅读专题下面的文章了解更多详细内容。

19

2026.01.15

windows查看wifi密码教程大全
windows查看wifi密码教程大全

本专题整合了windows查看wifi密码教程大全,阅读专题下面的文章了解更多详细内容。

85

2026.01.15

浏览器缓存清理方法汇总
浏览器缓存清理方法汇总

本专题整合了浏览器缓存清理教程汇总,阅读专题下面的文章了解更多详细内容。

40

2026.01.15

ps图片相关教程汇总
ps图片相关教程汇总

本专题整合了ps图片设置相关教程合集,阅读专题下面的文章了解更多详细内容。

11

2026.01.15

ppt一键生成相关合集
ppt一键生成相关合集

本专题整合了ppt一键生成相关教程汇总,阅读专题下面的的文章了解更多详细内容。

47

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
光速学会docker容器
光速学会docker容器

共33课时 | 1.9万人学习

Docker 17 中文开发手册
Docker 17 中文开发手册

共0课时 | 0人学习

极客学院Docker视频教程
极客学院Docker视频教程

共33课时 | 17.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号