springcloud中配置ci/cd集成docker的配置文件

这个没啥可说的,主要就是一些配置,不过为了方便同学们,还是放在这里,有需要的自取,当然有更好的建议,请同学们不吝赐教。

1. gitlab-ci.yml

复制代码
stages:
  - build
  - deploy

# 全局环境变量
variables:
  MAVEN_OPTS: "-Xmx2048m -Dmaven.wagon.http.retryHandler.count=5 -Dmaven.javadoc.skip=true -Dmaven.repositoryLockTimeout=300"
  DOCKER_HOST: unix:///var/run/docker.sock
  DOCKER_TLS_CERTDIR: "/certs"
  DOCKER_PULL_POLICY: "if-not-present"
  MAVEN_SETTINGS: /root/.m2/settings.xml

# 分支规则:develops/hotfix 手动触发,失败不阻断流水线
.rules_dev_hotfix:
  rules:
    - if: $CI_COMMIT_BRANCH == "develops"
      when: manual
      allow_failure: true
    - if: $CI_COMMIT_BRANCH == "hotfix"
      when: manual
      allow_failure: true

# Runner 标签匹配模板
.tags_docker_java:
  tags:
    - docker
    - java
    - vue
    - dev
    - deploy

# Deploy强制拉代码模板
.clone_full_code:
  variables:
    GIT_STRATEGY: fetch
    GIT_CHECKOUT: "true"
  before_script:
    - git config --global http.sslVerify false

# 打包构建推送镜像模板
.build_docker_template:
  stage: build
  image: dind-jdk17-mvn:27
  services:
    - docker:27-dind
  timeout: 60m
  extends: [.rules_dev_hotfix, .tags_docker_java]
  cache:
    paths:
      - .m2/repository
    key:
      files:
        - pom.xml
      prefix: $CI_COMMIT_BRANCH-$MODULE_NAME
    policy: pull
  before_script:
    - git config --global http.sslVerify false
  script:
    - mkdir -p .m2 /root/.m2
    # 修复后无XML语法错误的settings.xml
    - echo '<?xml version="1.0" encoding="UTF-8"?><settings xmlns="http://maven.apache.org/SETTINGS/1.2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd"><servers><server><id>nexus-releases</id><username>admin</username><password>Liuyihui1234</password></server><server><id>nexus-snapshots</id><username>admin</username><password>Liuyihui1234</password></server></servers><mirrors><mirror><id>nexus-public</id><mirrorOf>*</mirrorOf><name>Nexus私服公共组</name><url>http://10.11.11.102:8081/repository/maven-public/</url></mirror></mirrors><profiles><profile><id>nexus</id><repositories><repository><id>nexus-releases</id><url>http://10.11.11.102:8081/repository/maven-releases/</url><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots></repository><repository><id>nexus-snapshots</id><url>http://10.11.11.102:8081/repository/maven-snapshots/</url><releases><enabled>false</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories><pluginRepositories><pluginRepository><id>nexus-releases</id><url>http://10.11.11.102:8081/repository/maven-releases/</url><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots></pluginRepository><pluginRepository><id>nexus-snapshots</id><url>http://10.11.11.102:8081/repository/maven-snapshots/</url><releases><enabled>false</enabled></releases><snapshots><enabled>true</enabled></snapshots></pluginRepository></pluginRepositories></profile></profiles><activeProfiles><activeProfile>nexus</activeProfile></activeProfiles></settings>' > .m2/settings.xml
    - cp .m2/settings.xml $MAVEN_SETTINGS
    - cat $MAVEN_SETTINGS

    - mvn -s $MAVEN_SETTINGS clean package -T 1C -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Dmaven.compile.fork=true -Dmaven.resolver.transferParallel=8 -pl $MODULE_PATH -am
    - ls -lh $MODULE_PATH/target/*.jar
    - export ENV_TAG=$CI_COMMIT_BRANCH
    - cd $MODULE_PATH

    # - docker pull ${ENV_TAG}_$MODULE_NAME:latest || true
    - docker build --cache-from ${ENV_TAG}_$MODULE_NAME:latest -t ${ENV_TAG}_$MODULE_NAME:latest .

    - docker image prune -f --filter "until=24h"

# 单模块部署脚本
.deploy_single_script:
  script:
    - export ENV_TAG=$CI_COMMIT_BRANCH
    - ls -la
    - cd compose-${ENV_TAG}
    - ENV_TAG=${ENV_TAG} docker-compose up -d --force-recreate --pull never $MODULE_NAME

# 全量部署脚本
.deploy_all_script:
  script:
    - export ENV_TAG=$CI_COMMIT_BRANCH
    - ls -la
    - cd compose-${ENV_TAG}
    - ENV_TAG=${ENV_TAG} docker-compose up -d

# 并行构建任务
build_pig-register:
  extends: .build_docker_template
  variables:
    MODULE_PATH: pig-register
    MODULE_NAME: pig-register

build_pig-gateway:
  extends: .build_docker_template
  variables:
    MODULE_PATH: pig-gateway
    MODULE_NAME: pig-gateway

build_pig-upms-biz:
  extends: .build_docker_template
  variables:
    MODULE_PATH: pig-upms/pig-upms-biz
    MODULE_NAME: pig-upms-biz

build_iot-develops-biz:
  extends: .build_docker_template
  variables:
    MODULE_PATH: iot-develops/iot-develops-biz
    MODULE_NAME: iot-develops-biz

build_pig-auth:
  extends: .build_docker_template
  variables:
    MODULE_PATH: pig-auth
    MODULE_NAME: pig-auth

build_data-center-biz:
  extends: .build_docker_template
  variables:
    MODULE_PATH: data-center/data-center-biz
    MODULE_NAME: data-center-biz

# 单模块部署任务
deploy_pig-register:
  stage: deploy
  image: docker:latest
  timeout: 5m
  needs: [build_pig-register]
  extends: [.rules_dev_hotfix, .tags_docker_java, .clone_full_code, .deploy_single_script]
  variables:
    MODULE_NAME: pig-register

deploy_pig-gateway:
  stage: deploy
  image: docker:latest
  timeout: 5m
  needs: [build_pig-gateway]
  extends: [.rules_dev_hotfix, .tags_docker_java, .clone_full_code, .deploy_single_script]
  variables:
    MODULE_NAME: pig-gateway

deploy_pig-upms-biz:
  stage: deploy
  image: docker:latest
  timeout: 5m
  needs: [build_pig-upms-biz]
  extends: [.rules_dev_hotfix, .tags_docker_java, .clone_full_code, .deploy_single_script]
  variables:
    MODULE_NAME: pig-upms-biz

deploy_iot-develops-biz:
  stage: deploy
  image: docker:latest
  timeout: 5m
  needs: [build_iot-develops-biz]
  extends: [.rules_dev_hotfix, .tags_docker_java, .clone_full_code, .deploy_single_script]
  variables:
    MODULE_NAME: iot-develops-biz

deploy_pig-auth:
  stage: deploy
  image: docker:latest
  timeout: 5m
  needs: [build_pig-auth]
  extends: [.rules_dev_hotfix, .tags_docker_java, .clone_full_code, .deploy_single_script]
  variables:
    MODULE_NAME: pig-auth

deploy_data-center-biz:
  stage: deploy
  image: docker:latest
  timeout: 5m
  needs: [build_data-center-biz]
  extends: [.rules_dev_hotfix, .tags_docker_java, .clone_full_code, .deploy_single_script]
  variables:
    MODULE_NAME: data-center-biz

2. docker-compose.yml

复制代码
name: develops-ms
services:
  pig-register:
    image: develops_pig-register:latest
    container_name: develops_pig-register
    restart: always
    ports:
      - "8848:8848"
      - "9848:9848"
    environment:
      MODE: standalone
      ENV_NAME: develops
    networks:
      - develops_net

  pig-gateway:
    image: develops_pig-gateway:latest
    ports:
      - "7777:7777"
    environment:
      # Nacos地址:指向宿主机运行的hotfix nacos
      SPRING_CLOUD_NACOS_DISCOVERY_SERVER-ADDR: 10.11.11.101:8848
      SPRING_CLOUD_NACOS_CONFIG_SERVER-ADDR: 10.11.11.101:8848
      # 填入刚才创建的develops命名空间ID
      SPRING_CLOUD_NACOS_DISCOVERY_NAMESPACE: "700f7bf3-8576-4d80-a5c4-13e78c09f856"
      SPRING_CLOUD_NACOS_CONFIG_NAMESPACE: "700f7bf3-8576-4d80-a5c4-13e78c09f856"
      # nacos登录账号密码
      SPRING_CLOUD_NACOS_USERNAME: nacos
      SPRING_CLOUD_NACOS_PASSWORD: nacos
    networks:
      - develops_net

  pig-upms-biz:
    image: develops_pig-upms-biz:latest
    environment:
      # Nacos地址:指向宿主机运行的hotfix nacos
      SPRING_CLOUD_NACOS_DISCOVERY_SERVER-ADDR: 10.11.11.101:8848
      SPRING_CLOUD_NACOS_CONFIG_SERVER-ADDR: 10.11.11.101:8848
      # 填入刚才创建的develops命名空间ID
      SPRING_CLOUD_NACOS_DISCOVERY_NAMESPACE: "700f7bf3-8576-4d80-a5c4-13e78c09f856"
      SPRING_CLOUD_NACOS_CONFIG_NAMESPACE: "700f7bf3-8576-4d80-a5c4-13e78c09f856"
      # nacos登录账号密码
      SPRING_CLOUD_NACOS_USERNAME: nacos
      SPRING_CLOUD_NACOS_PASSWORD: nacos
    networks:
      - develops_net

  iot-develops-biz:
    image: develops_iot-develops-biz:latest
    environment:
      # Nacos地址:指向宿主机运行的hotfix nacos
      SPRING_CLOUD_NACOS_DISCOVERY_SERVER-ADDR: 10.11.11.101:8848
      SPRING_CLOUD_NACOS_CONFIG_SERVER-ADDR: 10.11.11.101:8848
      # 填入刚才创建的develops命名空间ID
      SPRING_CLOUD_NACOS_DISCOVERY_NAMESPACE: "700f7bf3-8576-4d80-a5c4-13e78c09f856"
      SPRING_CLOUD_NACOS_CONFIG_NAMESPACE: "700f7bf3-8576-4d80-a5c4-13e78c09f856"
      # nacos登录账号密码
      SPRING_CLOUD_NACOS_USERNAME: nacos
      SPRING_CLOUD_NACOS_PASSWORD: nacos
    networks:
      - develops_net

  pig-auth:
    image: develops_pig-auth:latest
    environment:
      # Nacos地址:指向宿主机运行的hotfix nacos
      SPRING_CLOUD_NACOS_DISCOVERY_SERVER-ADDR: 10.11.11.101:8848
      SPRING_CLOUD_NACOS_CONFIG_SERVER-ADDR: 10.11.11.101:8848
      # 填入刚才创建的develops命名空间ID
      SPRING_CLOUD_NACOS_DISCOVERY_NAMESPACE: "700f7bf3-8576-4d80-a5c4-13e78c09f856"
      SPRING_CLOUD_NACOS_CONFIG_NAMESPACE: "700f7bf3-8576-4d80-a5c4-13e78c09f856"
      # nacos登录账号密码
      SPRING_CLOUD_NACOS_USERNAME: nacos
      SPRING_CLOUD_NACOS_PASSWORD: nacos
    networks:
      - develops_net

  data-center-biz:
    image: develops_data-center-biz:latest
    environment:
      # Nacos地址:指向宿主机运行的hotfix nacos
      SPRING_CLOUD_NACOS_DISCOVERY_SERVER-ADDR: 10.11.11.101:8848
      SPRING_CLOUD_NACOS_CONFIG_SERVER-ADDR: 10.11.11.101:8848
      # 填入刚才创建的develops命名空间ID
      SPRING_CLOUD_NACOS_DISCOVERY_NAMESPACE: "700f7bf3-8576-4d80-a5c4-13e78c09f856"
      SPRING_CLOUD_NACOS_CONFIG_NAMESPACE: "700f7bf3-8576-4d80-a5c4-13e78c09f856"
      # nacos登录账号密码
      SPRING_CLOUD_NACOS_USERNAME: nacos
      SPRING_CLOUD_NACOS_PASSWORD: nacos
    networks:
      - develops_net

networks:
  develops_net:
    driver: bridge

name: hotfix-ms
services:
  pig-register:
    image: hotfix_pig-register:latest
    container_name: hotfix_pig-register
    restart: always
    ports:
      - "8848:8848"
      - "9848:9848"
    environment:
      MODE: standalone
      ENV_NAME: hotfix
    networks:
      - hotfix_net

  pig-gateway:
    image: hotfix_pig-gateway:latest
    container_name: hotfix_pig-gateway
    restart: always
    ports:
      - "17777:17777"
    environment:
      ENV_NAME: hotfix
    depends_on:
      - pig-registername: hotfix-ms
services:
  pig-register:
    image: hotfix_pig-register:latest
    container_name: hotfix_pig-register
    restart: always
    ports:
      - "8848:8848"
      - "9848:9848"
    environment:
      MODE: standalone
      ENV_NAME: hotfix
    networks:
      - hotfix_net

  pig-gateway:
    image: hotfix_pig-gateway:latest
    ports:
      - "17777:17777"
    environment:
      # Nacos地址:指向宿主机运行的hotfix nacos
      SPRING_CLOUD_NACOS_DISCOVERY_SERVER-ADDR: 10.11.11.101:8848
      SPRING_CLOUD_NACOS_CONFIG_SERVER-ADDR: 10.11.11.101:8848
      # 填入刚才创建的develops命名空间ID
      SPRING_CLOUD_NACOS_DISCOVERY_NAMESPACE: "0fdb7c54-c112-4b51-80f5-9ef3b9b33190"
      SPRING_CLOUD_NACOS_CONFIG_NAMESPACE: "0fdb7c54-c112-4b51-80f5-9ef3b9b33190"
      # nacos登录账号密码
      SPRING_CLOUD_NACOS_USERNAME: nacos
      SPRING_CLOUD_NACOS_PASSWORD: nacos
    networks:
      - hotfix_net

  pig-upms-biz:
    image: hotfix_pig-upms-biz:latest
    environment:
      # Nacos地址:指向宿主机运行的hotfix nacos
      SPRING_CLOUD_NACOS_DISCOVERY_SERVER-ADDR: 10.11.11.101:8848
      SPRING_CLOUD_NACOS_CONFIG_SERVER-ADDR: 10.11.11.101:8848
      # 填入刚才创建的develops命名空间ID
      SPRING_CLOUD_NACOS_DISCOVERY_NAMESPACE: "0fdb7c54-c112-4b51-80f5-9ef3b9b33190"
      SPRING_CLOUD_NACOS_CONFIG_NAMESPACE: "0fdb7c54-c112-4b51-80f5-9ef3b9b33190"
      # nacos登录账号密码
      SPRING_CLOUD_NACOS_USERNAME: nacos
      SPRING_CLOUD_NACOS_PASSWORD: nacos
    networks:
      - hotfix_net

  iot-develops-biz:
    image: hotfix_iot-develops-biz:latest
    environment:
      # Nacos地址:指向宿主机运行的hotfix nacos
      SPRING_CLOUD_NACOS_DISCOVERY_SERVER-ADDR: 10.11.11.101:8848
      SPRING_CLOUD_NACOS_CONFIG_SERVER-ADDR: 10.11.11.101:8848
      # 填入刚才创建的develops命名空间ID
      SPRING_CLOUD_NACOS_DISCOVERY_NAMESPACE: "0fdb7c54-c112-4b51-80f5-9ef3b9b33190"
      SPRING_CLOUD_NACOS_CONFIG_NAMESPACE: "0fdb7c54-c112-4b51-80f5-9ef3b9b33190"
      # nacos登录账号密码
      SPRING_CLOUD_NACOS_USERNAME: nacos
      SPRING_CLOUD_NACOS_PASSWORD: nacos
    networks:
      - hotfix_net

  pig-auth:
    image: hotfix_pig-auth:latest
    environment:
      # Nacos地址:指向宿主机运行的hotfix nacos
      SPRING_CLOUD_NACOS_DISCOVERY_SERVER-ADDR: 10.11.11.101:8848
      SPRING_CLOUD_NACOS_CONFIG_SERVER-ADDR: 10.11.11.101:8848
      # 填入刚才创建的develops命名空间ID
      SPRING_CLOUD_NACOS_DISCOVERY_NAMESPACE: "0fdb7c54-c112-4b51-80f5-9ef3b9b33190"
      SPRING_CLOUD_NACOS_CONFIG_NAMESPACE: "0fdb7c54-c112-4b51-80f5-9ef3b9b33190"
      # nacos登录账号密码
      SPRING_CLOUD_NACOS_USERNAME: nacos
      SPRING_CLOUD_NACOS_PASSWORD: nacos
    networks:
      - hotfix_net

  data-center-biz:
    image: hotfix_data-center-biz:latest
    environment:
      # Nacos地址:指向宿主机运行的hotfix nacos
      SPRING_CLOUD_NACOS_DISCOVERY_SERVER-ADDR: 10.11.11.101:8848
      SPRING_CLOUD_NACOS_CONFIG_SERVER-ADDR: 10.11.11.101:8848
      # 填入刚才创建的develops命名空间ID
      SPRING_CLOUD_NACOS_DISCOVERY_NAMESPACE: "0fdb7c54-c112-4b51-80f5-9ef3b9b33190"
      SPRING_CLOUD_NACOS_CONFIG_NAMESPACE: "0fdb7c54-c112-4b51-80f5-9ef3b9b33190"
      # nacos登录账号密码
      SPRING_CLOUD_NACOS_USERNAME: nacos
      SPRING_CLOUD_NACOS_PASSWORD: nacos
    networks:
      - hotfix_net

networks:
  hotfix_net:
    driver: bridge
    networks:
      - hotfix_net

  pig-upms-biz:
    image: hotfix_pig-upms-biz:latest
    container_name: hotfix_pig-upms-biz
    restart: always
    environment:
      ENV_NAME: hotfix
    depends_on:
      - pig-register
    networks:
      - hotfix_net

  iot-develops-biz:
    image: hotfix_iot-develops-biz:latest
    container_name: hotfix_iot-develops-biz
    restart: always
    environment:
      ENV_NAME: hotfix
    depends_on:
      - pig-register
    networks:
      - hotfix_net

  pig-auth:
    image: hotfix_pig-auth:latest
    container_name: hotfix_pig-auth
    restart: always
    environment:
      ENV_NAME: hotfix
    depends_on:
      - pig-register
    networks:
      - hotfix_net

  data-center-biz:
    image: hotfix_data-center-biz:latest
    container_name: hotfix_data-center-biz
    restart: always
    environment:
      ENV_NAME: hotfix
    depends_on:
      - pig-register
    networks:
      - hotfix_net

networks:
  hotfix_net:
    driver: bridge

3. Dockerfile

复制代码
# 业务基础镜像
FROM openjdk:17-jdk
# CI传入模块路径,自动适配多级目录
WORKDIR /app
# 动态拷贝对应模块的jar包
COPY target/*.jar app.jar
# 暴露端口,按需修改
EXPOSE 7002
# 启动命令
ENTRYPOINT ["java","-Duser.timezone=Asia/Shanghai", "-jar", "app.jar"]

主要就是以上三个文件的配置,就是gitlab自动化部署的核心了。

我是空谷有来人,感谢支持!

相关推荐
就叫_这个吧40 分钟前
IDEA本地springcloud项目 接入SkyWalking实现链路追踪
spring cloud·intellij-idea·skywalking
虎王物联44 分钟前
Docker WASM 边缘计算:12ms 冷启动如何重塑 IoT 网关部署
物联网·docker·容器·边缘计算·wasm
小江的记录本1 小时前
【ORM框架】MyBatis核心原理、ORM思想、MyBatis vs JPA
java·数据库·后端·spring·spring cloud·oracle·mybatis
凤山老林2 小时前
高可靠 API 网关架构:Spring Cloud Gateway 集成 Sentinel 实现智能限流、动态路由与安全管控
安全·spring cloud·架构·sentinel
李少兄2 小时前
Linux 服务器从零部署 kkFileView 完全指南(Docker 方案)
linux·服务器·docker
2301_旺仔2 小时前
【Docker 镜像仓库】
docker·云原生·仓库
2401_834636992 小时前
Docker 容器化技术全解:从镜像构建到容器编排的完整教案1
java·docker·容器
^酸酸2 小时前
Prometheus 监控架构部署实战:二进制与 Docker 双方案
docker·架构·prometheus
ly76892 小时前
前端测试完整指南:从单元测试、组件测试到端到端测试与 CI/CD
前端·ci/cd·单元测试
青 春 记 忆11 小时前
Dify Docker Compose 通用无损升级指南:从备份、双版本预演到切换与回滚
运维·人工智能·python·docker·容器