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

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

相关推荐
shuair31 分钟前
Spring Cloud 微服务脚手架:Simple Cloud 系统架构设计
spring cloud·微服务·系统架构
tedcloud1232 小时前
Docker Compose 部署 Uptime Kuma:配置 HTTPS、QQ 邮箱告警与数据备份
服务器·网络协议·ui·docker·容器·https·开源
syntaxsage3 小时前
Dive:Docker 镜像层可视化分析工具
运维·其他·docker·容器
java_logo3 小时前
Docker 部署 Samba:轻松搭建局域网文件共享
运维·docker·容器·文件共享·samba·smb·轩辕镜像
todoitbo13 小时前
群晖NAS部署JmalCloud:Docker安装、文件管理、博客与公网访问完整教程
运维·docker·容器
是枚小菜鸡儿吖20 小时前
Home Assistant跨品牌智能家居教程:Docker部署、米家接入、vivo桥接与远程访问
docker·容器·智能家居
螺蛳粉 螺蛳粉1 天前
第 02 篇:镜像分层与 containerd 2.x 实战:SystemdCgroup 与 pause 镜像配置踩坑(底座认知 02)
docker·云原生·容器·kubernetes·etcd·containerd·kube-apiserver
wefg11 天前
【Docker】镜像相关指令
运维·docker·容器
java_logo1 天前
Docker 部署 DPanel:轻松搭建轻量容器管理平台
运维·docker·容器·podman·容器管理·dpanel·轩辕镜像
死磕音视频1 天前
Open WebUI 入门:用 Docker 装上本地对话界面并连接 Ollama
docker·ollama·本地大模型·open webui