From c2ff984c126bdb93f8085fa8667cd0ab8e9a48c9 Mon Sep 17 00:00:00 2001 From: lujianxin <2458505331@qq.com> Date: Mon, 23 Jun 2025 14:37:06 +0800 Subject: [PATCH] =?UTF-8?q?ci:=E9=87=8D=E6=9E=84=20Drone=20CI/CD=20?= =?UTF-8?q?=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 更新 .drone.yml 文件,增加多服务构建和部署步骤 - 修改 Dockerfile,简化为单层结构并直接运行 JAR 文件 - 新增 docker-compose.yml 文件,定义多服务部署配置 - 优化 CI/CD 流程,支持多服务同时构建和部署 --- .drone.yml | 66 +++++++++++++++++++++++++++------------------- Dockerfile | 14 ++-------- docker-compose.yml | 26 ++++++++++++++++++ 3 files changed, 67 insertions(+), 39 deletions(-) create mode 100644 docker-compose.yml diff --git a/.drone.yml b/.drone.yml index 3f420d2..3c1425e 100644 --- a/.drone.yml +++ b/.drone.yml @@ -3,40 +3,52 @@ type: docker name: ${serverName} # 服务名成,可与jar包名保持一致 steps: - - name: build-jar # 流水线名称 - image: maven:3.8.5-openjdk-17 # 定义创建容器的Docker镜像,基线项目使用jdk17 - volumes: # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置 - - name: maven-cache - path: /root/.m2 # 将maven下载依赖的目录挂载出来,防止重复下载 - - name: maven-build - path: /home/app/build # 将应用打包好的Jar和执行脚本挂载出来 - commands: # 定义在Docker容器中执行的shell命令 - - mvn clean package -DskipTests=true # 应用打包命 - - cp ${executePath} /home/app/build/${serverName}.jar # 需要修改提取的jar包位置,默认当前在根项目的target目录下,jar包名与后续执行需保持一致 - - cp start.sh /home/app/build/ + + - name: build-jar + image: alpine + environment: + APP_VERSION: ${APP_VERSION} + volumes: + - name: build-output + path: /home/app/build + commands: + - mkdir -p /home/app/build/{gateway,system,infra} + - cp ruoyi-gateway/target/*.jar /home/app/build/gateway/app.jar + - cp ruoyi-modules-system/target/*.jar /home/app/build/system/app.jar + - cp yudao-module-infra/target/*.jar /home/app/build/file/app.jar - cp Dockerfile /home/app/build/ -# - cp .dockerignore /home/app/build/ - - cp docker.sh /home/app/build/ - name: build-docker image: docker - volumes: # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置 - - name: maven-build - path: /home/app/build # 将应用打包好的Jar和执行脚本挂载出来 + environment: + APP_VERSION: ${APP_VERSION} + volumes: + - name: build-output + path: /home/app/build - name: docker - path: /var/run/docker.sock # 挂载宿主机的docker - settings: - dockerfile: /home/app/build/Dockerfile - commands: # 定义在Docker容器中执行的shell命令 + path: /var/run/docker.sock + commands: - cd /home/app/build - - chmod +x docker.sh - - sh docker.sh - - docker ps + - cd gateway && docker build -t ruoyi-gateway:${APP_VERSION} -f ../Dockerfile . + - cd ../system && docker build -t ruoyi-system:${APP_VERSION} -f ../Dockerfile . + - cd ../infra && docker build -t ruoyi-infra:${APP_VERSION} -f ../Dockerfile . -volumes: # 定义流水线挂载目录,用于共享数据 - - name: maven-build - host: - path: /home/data/maven/build # 从宿主机中挂载的目录 + - name: deploy-with-compose + image: docker/compose:1.29.2 + environment: + APP_VERSION: ${APP_VERSION} + volumes: + - name: build-output + path: /home/app/build + - name: docker + path: /var/run/docker.sock + commands: + - cd /home/app/build + - cp docker-compose.yml . + - sed -i "s/\${APP_VERSION}/${APP_VERSION}/g" docker-compose.yml + - docker-compose up -d + +volumes: - name: maven-cache host: path: /home/data/maven/cache diff --git a/Dockerfile b/Dockerfile index 3948ad8..d2a72cc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,18 +1,8 @@ # 目前制作docker镜像依赖的jdk,基线项目使用jdk17 FROM openjdk:17.0.2-oraclelinux8 -ENV SERVICE_PORTS=${innerPort} - -RUN mkdir -p /home/app/ - WORKDIR /home/app -COPY ./start.sh /home/app/ -# COPY ./.dockerignore /home/app/ -# jar包名,建议与docker.sh和drone配置文件的服务名一致 -COPY ./${serverName}.jar /home/app/ +COPY app.jar app.jar -RUN chmod 755 -R /home/app/ - - -ENTRYPOINT ["/home/app/start.sh"] +ENTRYPOINT ["java", "-jar", "app.jar", "--spring.profiles.active=prod"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..566c9f1 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,26 @@ +version: '3.8' + +services: + gateway: + image: ruoyi-gateway:${APP_VERSION} + container_name: ruoyi-gateway + ports: + - "48080:48080" + environment: + SPRING_PROFILES_ACTIVE: dev + + system: + image: ruoyi-system:${APP_VERSION} + container_name: ruoyi-system + ports: + - "48081:48081" + environment: + SPRING_PROFILES_ACTIVE: dev + + infra: + image: ruoyi-infra:${APP_VERSION} + container_name: ruoyi-infra + ports: + - "48082:48082" + environment: + SPRING_PROFILES_ACTIVE: dev \ No newline at end of file