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自动化部署的核心了。

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

相关推荐
自律最差的编程狗1 小时前
从零搭建:VMware + Ubuntu + Docker + MySQL 完整指南
mysql·ubuntu·docker
天空之外1363 小时前
Docker安装MySQL 8.4 LTS、Docker安装Redis 7.4.x、Docker安装MinIO
java·mysql·docker
空谷有来人3 小时前
docker安装redis
redis·docker·容器
Ai拆代码的曹操4 小时前
K8s 实战:CrashLoopBackOff 状态下 kubectl logs 拿不到日志的三层排查方案
linux·docker·kubernetes
XR风云5 小时前
docker buildx 忽略容器镜像服务的证书校验的方法
运维·docker·容器
Pluchon18 小时前
Java个人综合项目——萌部落社区V2.0
java·python·spring·spring cloud·postman·idea
营养充电站19 小时前
KMP全栈开发:从Android到AI Agent的技术演进与实践
人工智能·算法·docker·jupyter
小义_21 小时前
K8s 全网高频常用命令大全
docker·容器·kubernetes
key_3_feng1 天前
AI Native 下企业 CI/CD 最佳实践:AI 驱动的流水线设计与落地细节
人工智能·ci/cd