GitLabcicd+SpringBoot+Docker实例(附源码)

环境准备

1.、gitLab:因为gitLab需要内存太大(4G起步),我们使用官网的https://gitlab.com/

2.、docker:也安装在宿主机中

3、gitLabRunner:安装在自己服务器宿主机中(不安装在容器里)

       注意:gitLabRunner如果安装在容器里,此后在runner环境下 一些docker命令会找不到(容器里面执行不了docker命令)。目前还没找到解决办法

安装好之后 把gitLabRunner注册到gitLab中,这有很多的教程 便不再赘述。

本地代码,通过提交到gitLab之后,会通过gitlab.yml文件,触发gitLabRunner的CICD流程 如下:

代码准备

cicd和docker的配置文件分别为 Dockerfile 和gitlab.yml 均放在根目录下

1.这里是Dockerfile文件内容

maven的打包脚本是在Dockerfile中实现的

# maven 打包 打包过程在Dockerfile
FROM maven:3.6.3-jdk-8-slim AS builder
ADD ./pom.xml pom.xml
ADD ./src src/
RUN mvn clean compile package -Dmaven.test.skip=true
FROM openjdk:8-jre-slim-buster
# 指定时区
RUN echo "Asia/Shanghai" > /etc/timezone;dpkg-reconfigure -f noninteractive tzdata
# 指定工作目录
WORKDIR /app
# copy目录 
COPY  --from=builder target/demo-0.0.1-SNAPSHOT.jar /app/app.jar
ENTRYPOINT ["sh","-c","java -jar /app/app.jar"]

--from的解释

2.这里是.gitlab.yml文件的内容,gitlab.yml文件的核心代码就两行 构建和启动。

- docker build -t hello-cicd .
- docker run -d -p 8080:8080 --name hello-cicd hello-cicd

stages:
  - build
  - deploy

job_build:
  stage: build
  tags:
  - hostrunner
  script:
    # 通过Dockerfile生成镜像
    - echo "=============== 开始生成镜像  ==============="
    - docker build -t hello-cicd .

job_deploy:
  stage: deploy
  tags:
  - hostrunner
  script:
    #  删除已经在运行的容器
    - if [ $(docker ps -aq --filter name=hello-cicd) ]; then docker rm -f hello-cicd;fi
    #  删除none的镜像
    - docker rmi $(docker images -f "dangling=true" -q)
    # 通过镜像启动容器,并把本机端口映射到容器端口
    - echo "=============== 通过镜像启动容器,并把本机端口映射到容器端口==============="
    - docker run -d -p 8080:8080 --name hello-cicd hello-cicd
  only:
    - master

源码和后续优化

SpringBoot源码地址  开箱即用提交之后 输入http://ip:8080/test即可访问

1.当我们yml文件很多的时候 可以抽出模板库的方法管理(类似java的父类继承)

2.此时的启动命令是 ENTRYPOINT ["sh","-c","java -jar /app/app.jar"] java -jar 实际工作中 我们会有配置文件 启动命令往往是 java -jar --spring.profiles.active=prod 

如果prod配置文件中 一些密码不可以写在开发的配置文件里,我们可以使用变量的方法提取密码

原文地址:https://www.cnblogs.com/ssskkk/p/14825567.html