• 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配置文件中 一些密码不可以写在开发的配置文件里,我们可以使用变量的方法提取密码

  • 相关阅读:
    p_value
    p_value
    第一次差异分析
    fdr
    rpkm&map
    rpkm&map
    s
    python数据处理小函数集合
    Jupyter Notebook 的快捷键
    自由度degree of freedom
  • 原文地址:https://www.cnblogs.com/ssskkk/p/14825567.html
Copyright © 2020-2023  润新知