springboot单体服务的CICD搭建

该文描述了在已配置的GitLab和gitlab-runner环境下,如何通过Docker和DockerCompose实现CICD自动化部署一个简单的SpringBoot应用。首先创建Dockerfile和docker-compose.yml文件,定义服务的构建和运行方式。接着,在.gitlab-ci.yml文件中设置构建和部署阶段,完成Maven构建和Docker容器的启动。最后提到了解决Docker守护进程连接问题的方法,确保gitlab-runner具有足够的权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CICD搭建流程

前提:已经完成gitlab以及gitlab-runner的安装注册操作,服务器以安装maven和java并配好系统环境变量

开始模拟构建一个简单的springboot项目,访问/test1/hello,页面会返回hello
在这里插入图片描述
下面开始实现CICD自动化部署

需要在项目文件下新建一个docker-ci的文件夹,里面有一个cicdhello-hello的文件夹和docker-compose.yml文件(这两个文件是同级),可以参考上图的文件目录

cicdhello-hello文件夹下主要放两个东西,其中一个是构建镜像所需要的Dockerfile文件,还有一个是对应的本次单体服务的jar包(现在还没有)

Dockerfile文件内容参考如下

FROM java:8

#Copy the jar file

RUN mkdir -p /opt/run/

ADD ./cicd_hello-0.0.1-SNAPSHOT.jar /opt/run/

WORKDIR /opt/run/

上面代码意思是,基于java:8这个基础镜像(前提是docker已经拉取了java:8这个官方镜像),创建/opt/run文件夹,将jar包添加到/opt/run下,然后切换到/opt/run/目录下

docker-compose.yml文件

version: '3'
services:

  cicdhello-hello:
    build:
      context: ./cicdhello-hello
      dockerfile: Dockerfile
    image: cicdhello-hello:latest
    container_name: cicdhello-hello
    ports:
      - "9777:9777"
    entrypoint: ["java","-jar","-Xms1024m","-Xmx1024m","/opt/run/cicd_hello-0.0.1-SNAPSHOT.jar"]

要注意服务器的安全组9777端口要确保开放才可以访问到

.gitlab-ci.yml文件

stages:
  - build
  - deploy
  
build:
  stage: build
  tags:
    - build
  only:
    - master
  script:
    - echo "mvn clean"
    - echo "mvn install"
    - mvn clean compile
    
deploy:
  stage: deploy
  tags:
    - deploy
  only:
    - master
  script:
    - mvn clean package -Dmaven.test.skip=true
    - echo "starting scp jar to dev sever"
    - mv ./target/cicd_hello-0.0.1-SNAPSHOT.jar docker-ci/cicdhello-hello
    - cd docker-ci && docker-compose stop && docker-compose rm -f
    - pwd
    - docker-compose up -d  --force-recreate --build

两个stage,一个是build,负责maven clean和compile
另一个是deploy,负责打jar包,将jar包文件移动到刚刚创建的docker-ci/cicdhello-hello下面,进入到docker-ci文件中,先停止掉以前的docker-compose启动的容器,然后重新docker-compose up -d进行容器的启动

注意:可能会出现以下报错
Couldn’t connect to Docker daemon at http+docker://localhost - is it running?
这时需要把gitlab-runner这个用户添加到docker用户组里才可以

操作步骤:
sudo groupadd docker #添加docker用户组

cat /etc/group #查看服务器所有的group组

在这里插入图片描述

因为是gitlab-runner作为用户,所以要把gitlab-runner加入到docker用户组里

执行指令:
usermod -aG docker gitlab-runner

重启docker
systemctl restart docker

再次执行deploy方法即可成功。访问ip:9777/test1/hello即可看到访问成功的页面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值