xiehuanqun hai 1 mes
pai
achega
1afa0d641c
Modificáronse 3 ficheiros con 124 adicións e 62 borrados
  1. 109 44
      .drone.yml
  2. 4 8
      Dockerfile
  3. 11 10
      docker-compose.yml

+ 109 - 44
.drone.yml

@@ -9,90 +9,155 @@ trigger:
 
 steps:
 
-  # Maven 构建(Master)
-  - name: build-master
-    image: maven:3.8-openjdk-17
+  # Maven 缓存
+  - name: restore-cache
+    image: drillster/drone-volume-cache
+    settings:
+      restore: true
+      mount:
+        - /root/.m2/repository
+    volumes:
+      - name: repository
+        path: /cache
+
+  # 打包 prod
+  - name: build-prod
+    image: matderosa/maven-3.8-openjdk-17-gcc8.5
     volumes:
       - name: maven-cache
         path: /root/.m2
-      - name: build-output
+      - name: maven-build
         path: /app/build
     commands:
       - mvn clean package -P prod
       - mkdir -p /app/build/target
       - cp target/test.jar /app/build/target/test.jar
-      - cp Dockerfile docker-compose.yml /app/build/
+      - cp Dockerfile /app/build/Dockerfile
+      - cp docker-compose.yml /app/build/docker-compose.yml
     when:
       branch:
-        - master
+        master
 
-  # Maven 构建(Develop)
-  - name: build-develop
-    image: maven:3.8-openjdk-17
+  # 打包 dev
+  - name: build-dev
+    image: matderosa/maven-3.8-openjdk-17-gcc8.5
     volumes:
       - name: maven-cache
         path: /root/.m2
-      - name: build-output
+      - name: maven-build-dev
         path: /app/build
     commands:
       - mvn clean package -P dev
       - mkdir -p /app/build/target
       - cp target/test-dev.jar /app/build/target/test-dev.jar
-      - cp Dockerfile docker-compose.yml /app/build/
+      - cp Dockerfile /app/build/Dockerfile
+      - cp docker-compose.yml /app/build/docker-compose.yml
     when:
       branch:
-        - develop
+        develop
 
-  # 部署(Master)
-  - name: deploy-master
-    image: appleboy/drone-ssh:1.8.0
+  # 传输 prod
+  - name: scp-master
+    image: appleboy/drone-scp
     settings:
+      port: 22
       host:
-        from_secret: ssh_host
+        from_secret: test_ssh_host
       username:
-        from_secret: ssh_user
+        from_secret: test_ssh_username
       password:
-        from_secret: ssh_pwd
+        from_secret: test_ssh_password
+      command_timeout: 5m
+      source:
+        - target/test.jar
+      target: /home/TestApp/
+    when:
+      branch: master
+      path:
+        - "!db/**"
+        - "!README.md"
+
+  # 部署 prod
+  - name: deploy-ssh-prod
+    image: appleboy/drone-ssh
+    settings:
       port: 22
-      command_timeout: 10m
+      host:
+        from_secret: test_ssh_host
+      username:
+        from_secret: test_ssh_username
+      password:
+        from_secret: test_ssh_password
+      command_timeout: 1m
       script:
-        - cd /home/app
-        - docker-compose down
-        - docker-compose build
-        - docker-compose up -d
-        - docker image prune -f
-        - echo "Master deployment finished"
+        - cd /home/TestApp
+        - sudo docker build -t test .
+        - sudo docker-compose down
+        - sudo docker-compose up -d
+        - sudo echo "Docker App started."
     when:
-      branch:
-        - master
+      branch: master
 
-  # 部署(Develop)
-  - name: deploy-develop
-    image: appleboy/drone-ssh:1.8.0
+  # 传输 dev
+  - name: scp-develop
+    image: appleboy/drone-scp
     settings:
+      port: 22
       host:
-        from_secret: ssh_host
+        from_secret: test_ssh_host
       username:
-        from_secret: ssh_user
+        from_secret: test_ssh_username
       password:
-        from_secret: ssh_pwd
+        from_secret: test_ssh_password
+      command_timeout: 5m
+      source:
+        - target/test-dev.jar
+      target: /home/TestAppDev/
+    when:
+      branch: develop
+
+  # 部署 dev
+  - name: deploy-ssh-dev
+    image: appleboy/drone-ssh
+    settings:
       port: 22
-      command_timeout: 10m
+      host:
+        from_secret: test_ssh_host
+      username:
+        from_secret: test_ssh_username
+      password:
+        from_secret: test_ssh_password
+      command_timeout: 1m
       script:
-        - cd /home/app
-        - docker-compose down
-        - docker-compose build
-        - docker-compose up -d
-        - docker image prune -f
-        - echo "Develop deployment finished"
+        - cd /home/TestAppDev
+        - sudo docker build -t test-dev .
+        - sudo docker-compose down
+        - sudo docker-compose up -d
+        - sudo echo "Docker App started."
     when:
-      branch:
-        - develop
+      branch: develop
+
+  # 清理镜像
+  - name: cleanup
+    image: docker:dind
+    volumes:
+      - name: docker-sock
+        path: /var/run/docker.sock
+    when:
+      status: [ success ]
+    commands:
+      - docker image prune -f --filter "dangling=true" --filter "until=1h"
 
 volumes:
+  - name: maven-build
+    host:
+      path: /home/TestApp
+  - name: maven-build-dev
+    host:
+      path: /home/TestAppDev
   - name: maven-cache
     host:
       path: /root/docker/maven/cache
-  - name: build-output
+  - name: docker-sock
     host:
-      path: /home/app
+      path: /var/run/docker.sock

+ 4 - 8
Dockerfile

@@ -1,14 +1,10 @@
-# 使用官方 JDK 17 镜像
 FROM openjdk:17-oracle
 
-# 设置工作目录
-WORKDIR /app/build
+# 创建目录
+RUN mkdir -p /app/build
 
-# 拷贝编译好的 jar 到镜像
-COPY ./target/test.jar /app/build/test.jar
-
-# 暴露应用端口(与 Spring Boot 配置的端口一致)
-EXPOSE 48080
+# 拷贝 Jar
+COPY target/test.jar /app/build/test.jar
 
 # 启动命令
 ENTRYPOINT ["java", "-Dloader.path=/app/build", "-jar", "/app/build/test.jar"]

+ 11 - 10
docker-compose.yml

@@ -1,17 +1,18 @@
-version: "3.8"
-
+version: "2"
 services:
-  daogucms-service:
-    image: test:latest           # Drone 构建出来的镜像
-    container_name: test
+  test-service:
     build:
       context: .
       dockerfile: Dockerfile
+    container_name: test
     restart: always
-    environment:
-      TZ: "Asia/Shanghai"
-    network_mode: "host"         # 使用宿主机网络
+    image: test:latest
     volumes:
-      - /home/app/uploads/:/home/app/uploads/
-      - /home/app/logs/:/logs/
+      - /home/TestApp/target/:/app/build/
+      - /home/TestApp/uploads/:/home/TestApp/uploads/
+      - /home/TestApp/logs/:/logs/
       - /etc/localtime:/etc/localtime
+    network_mode: "host"
+    environment:
+      TZ: 'Asia/Shanghai'
+    entrypoint: ["java", "-Dloader.path=/app/build", "-jar", "/app/build/test.jar"]