diff --git a/.drone.yml b/.drone.yml index 3f420d2..b098f43 100644 --- a/.drone.yml +++ b/.drone.yml @@ -3,49 +3,83 @@ 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/ - - 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和执行脚本挂载出来 - - name: docker - path: /var/run/docker.sock # 挂载宿主机的docker - settings: - dockerfile: /home/app/build/Dockerfile - commands: # 定义在Docker容器中执行的shell命令 - - cd /home/app/build - - chmod +x docker.sh - - sh docker.sh - - docker ps - -volumes: # 定义流水线挂载目录,用于共享数据 - name: maven-build - host: - path: /home/data/maven/build # 从宿主机中挂载的目录 + image: maven:3.8.5-openjdk-17 + volumes: + - name: maven-cache + path: /root/.m2 + - name: build-output + path: /home/app/build + commands: + - cd /drone/src + - mvn clean package -DskipTests=true -pl yudao-gateway,yudao-module-system/yudao-module-system-biz,yudao-module-infra/yudao-module-infra-biz -am + + - name: copy-jars + image: alpine + volumes: + - name: build-output + path: /home/app/build + commands: + - mkdir -p /home/app/build/gateway + - mkdir -p /home/app/build/system + - mkdir -p /home/app/build/infra + - ls -l yudao-gateway/target/ # 检查源文件是否存在 + - cp yudao-gateway/target/yudao-gateway.jar /home/app/build/gateway/app.jar || echo "Failed to copy gateway jar" + - cp yudao-module-system/yudao-module-system-biz/target/yudao-module-system-biz.jar /home/app/build/system/app.jar || echo "Failed to copy system biz jar" + - cp yudao-module-infra/yudao-module-infra-biz/target/yudao-module-infra-biz.jar /home/app/build/infra/app.jar || echo "Failed to copy infra biz jar" + - cp Dockerfile /home/app/build/ + - cp docker-compose.yml /home/app/build/ + + - name: build-docker-images + image: docker + volumes: + - name: build-output + path: /home/app/build + - name: docker + path: /var/run/docker.sock + commands: + - # 停止容器(如果存在) + - docker inspect --type=container yudao-gateway >/dev/null 2>&1 && docker stop yudao-gateway || true + - docker inspect --type=container yudao-module-system >/dev/null 2>&1 && docker stop yudao-module-system || true + - docker inspect --type=container yudao-module-infra >/dev/null 2>&1 && docker stop yudao-module-infra || true + + - # 删除容器(如果存在) + - docker inspect --type=container yudao-gateway >/dev/null 2>&1 && docker rm yudao-gateway || true + - docker inspect --type=container yudao-module-system >/dev/null 2>&1 && docker rm yudao-module-system || true + - docker inspect --type=container yudao-module-infra >/dev/null 2>&1 && docker rm yudao-module-infra || true + + - # 删除镜像(如果存在) + - docker inspect --type=image yudao-gateway >/dev/null 2>&1 && docker rmi yudao-gateway || true + - docker inspect --type=image yudao-module-system >/dev/null 2>&1 && docker rmi yudao-module-system || true + - docker inspect --type=image yudao-module-infra >/dev/null 2>&1 && docker rmi yudao-module-infra || true + + - cd /home/app/build + - cd gateway && docker build -t yudao-gateway:${APP_VERSION} -f ../Dockerfile . + - cd ../system && docker build -t yudao-module-system:${APP_VERSION} -f ../Dockerfile . + - cd ../infra && docker build -t yudao-module-infra:${APP_VERSION} -f ../Dockerfile . + + - 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 + - sed -i "s/${APP_VERSION}/${APP_VERSION}/g" docker-compose.yml + - docker-compose -f docker-compose.yml up -d + +volumes: - name: maven-cache host: path: /home/data/maven/cache + - name: build-output + host: + path: /home/data/maven/build - name: docker host: - path: /var/run/docker.sock - -#trigger: -# event: -# - custom -# ref: -# - refs/tags/version1.1 + path: /var/run/docker.sock \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 3948ad8..3393a02 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=dev"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..245d54d --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,26 @@ +version: '3.8' + +services: + gateway: + image: yudao-gateway:${APP_VERSION} + container_name: yudao-gateway + ports: + - "48080:48080" + environment: + SPRING_PROFILES_ACTIVE: dev + + system: + image: yudao-module-system:${APP_VERSION} + container_name: yudao-module-system + ports: + - "48081:48081" + environment: + SPRING_PROFILES_ACTIVE: dev + + infra: + image: yudao-module-infra:${APP_VERSION} + container_name: yudao-module-infra + ports: + - "48082:48082" + environment: + SPRING_PROFILES_ACTIVE: dev \ No newline at end of file diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/application-dev.yaml b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/application-dev.yaml index 15bce30..751d660 100644 --- a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/application-dev.yaml +++ b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/application-dev.yaml @@ -127,4 +127,4 @@ spring: # 芋道配置项,设置当前项目所有自定义的配置 yudao: - demo: true # 开启演示模式 + demo: false # 开启演示模式