xiehuanqun 1 tháng trước cách đây
mục cha
commit
2f0cfefa93
3 tập tin đã thay đổi với 34 bổ sung175 xóa
  1. 20 154
      .drone.yml
  2. 7 2
      Dockerfile
  3. 7 19
      docker-compose.yml

+ 20 - 154
.drone.yml

@@ -2,202 +2,68 @@ kind: pipeline
 type: docker
 name: default
 
-# 触发分支
 trigger:
   branch:
     - master
     - develop
 
 steps:
-
-  # 获取缓存 (首次部署注释掉此处)
-  - name: restore-cache
-    image: drillster/drone-volume-cache
-    settings:
-      restore: true
-      mount:
-        - /root/.m2/repository
-    volumes:
-      - name: repository
-        path: /cache
-
-  # 打包 (prod)
-  - name: build-prod
+  # 构建 jar
+  - name: maven-build
     image: maven:3.8-openjdk-17
-    volumes: # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置
+    volumes:
       - name: maven-cache
-        path: /root/.m2 # 将maven下载依赖的目录挂载出来,防止重复下载
-      # (/app/build/ 对应的是 /home/www/project/DaoguCms/ 目录)
-      - name: maven-build
-        path: /app/build # 将应用打包好的Jar和执行脚本挂载出来
+        path: /root/.m2
+      - name: build-output
+        path: /app/build
     commands:
       - mvn clean package -P prod
-      # (此时拷贝的内容是仓库分支拉下来的代码)
       - mkdir -p /app/build/target
-      # 将打包好的 Jar包 拷贝到指定目录
       - cp target/test.jar /app/build/target/test.jar
-      # 将配置文件从最新的分支 拷贝到目标目录
-      - cp Dockerfile /app/build/Dockerfile
-      - cp docker-compose.yml /app/build/docker-compose.yml
-    when:
-      branch:
-        master
-
-  # 打包 (develop)
-  # - 在同个服务器时,docker-compose.yml 需要修改服务名
-  - name: build-dev
-    image: maven:3.8-openjdk-17
-    volumes: # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置
-      - name: maven-cache
-        path: /root/.m2 # 将maven下载依赖的目录挂载出来,防止重复下载
-      # (/app/build/ 对应的是 /home/DaoguCms/ 目录)
-      - name: maven-build-dev
-        path: /app/build # 将应用打包好的Jar和执行脚本挂载出来
-    commands:
-      - mvn clean package -P dev
-      # (此时拷贝的内容是仓库分支拉下来的代码)
-      - mkdir -p /app/build/target
-      # 将打包好的 Jar包 拷贝到指定目录
-      - cp target/test-dev.jar /app/build/target/test-dev.jar
-      # 将配置文件从最新的分支 拷贝到目标目录
       - cp Dockerfile /app/build/Dockerfile
       - cp docker-compose.yml /app/build/docker-compose.yml
-    when:
-      branch:
-        develop
 
-  # # 更新缓存
-  # - name: rebuild-cache
-  #   image: drillster/drone-volume-cache
-  #   settings:
-  #     rebuild: true
-  #     mount:
-  #       - /root/.m2/repository
-  #   volumes:
-  #     - name: repository
-  #       path: /cache
-
-  # 传输 (master)
-  - name: scp-master
+  # 上传到服务器
+  - name: scp-upload
     image: appleboy/drone-scp
     settings:
-      port: 22
       host:
         from_secret: ssh_host
       username:
         from_secret: ssh_user
       password:
         from_secret: ssh_pwd
-      command_timeout: 5m
+      port: 22
       source:
-        - target/test.jar
+        - /app/build/target/test.jar
+        - /app/build/Dockerfile
+        - /app/build/docker-compose.yml
       target: /home/app/
-    when:
-      branch: master
-      path:
-        - "!db/**"
-        - "!README.md"
 
-  # 部署 (prod)
-  - name: deploy-ssh-prod
+  # 部署容器
+  - name: deploy
     image: appleboy/drone-ssh
     settings:
-      port: 22
       host:
         from_secret: ssh_host
       username:
         from_secret: ssh_user
       password:
         from_secret: ssh_pwd
-      command_timeout: 1m
-      script:
-        # (此时是在 SSH登录服务器 的作用域)
-        # Docker 启动
-        - cd /home/app
-        # 根据 Dockerfile 配置创建镜像 (名称需要小写)
-        - sudo docker build -t test .
-        # 停止容器
-        - sudo docker-compose down
-        # 启动容器 (根据 docker-compose.yml 配置)
-        - sudo docker-compose up -d
-        - sudo docker image prune -f
-        - sudo echo "Docker App started."
-    when:
-      branch: master
-      path:
-        - "!db/**"
-        - "!README.md"
-
-  # ------------------------------------------------------------------------------
-
-  # 传输 (develop)
-  - name: scp-develop
-    image: appleboy/drone-scp
-    settings:
       port: 22
-      host:
-        from_secret: ssh_host
-      username:
-        from_secret: ssh_user
-      password:
-        from_secret: ssh_pwd
       command_timeout: 5m
-      source:
-        - target/test-dev.jar
-      target: /home/app/
-    when:
-      branch: develop
-      path:
-        - "!db/**"
-        - "!README.md"
-
-  # 部署 (develop)
-  - name: deploy-ssh-dev
-    image: appleboy/drone-ssh
-    settings:
-      port: 22
-      host:
-        from_secret: ssh_host
-      username:
-        from_secret: ssh_user
-      password:
-        from_secret: ssh_pwd
-      command_timeout: 1m
       script:
         - cd /home/app
-        - sudo docker build -t test-dev .
-        - sudo docker-compose down
+        - sudo docker-compose down || true
+        - sudo docker-compose build --no-cache
         - sudo docker-compose up -d
         - sudo docker image prune -f
-        - sudo echo "Docker App started."
-    when:
-      branch: develop
-
-  # ------------------------------------------------------------------------------
+        - echo "🚀 App 已部署完成"
 
-  # 清除冗余镜像
-  - name: cleanup
-    image: docker:dind
-    volumes:
-      - name: docker-sock
-        path: /var/run/docker.sock
-    when:
-      status: [ success ]
-    commands:
-      # 删除1小时前创建的未使用镜像
-      - docker image prune -f --filter "until=1h"
-
-
-volumes: # 定义流水线挂载目录,用于共享数据
-  - name: maven-build
-    host:
-      path: /home/app # 从宿主机中挂载的目录
-  - name: maven-build-dev
-    host:
-      path: /home/app # 从宿主机中挂载的目录
+volumes:
   - name: maven-cache
     host:
       path: /root/docker/maven/cache
-  - name: docker-sock
+  - name: build-output
     host:
-      path: /var/run/docker.sock
+      path: /home/app

+ 7 - 2
Dockerfile

@@ -1,4 +1,9 @@
 FROM openjdk:17-oracle
 
-RUN mkdir -p /app/build && chmod +x /app/build
-ADD ./target/test.jar /app/build/test.jar
+WORKDIR /app/build
+
+COPY ./target/test.jar /app/build/test.jar
+
+EXPOSE 48080
+
+ENTRYPOINT ["java", "-Dloader.path=/app/build", "-jar", "/app/build/test.jar"]

+ 7 - 19
docker-compose.yml

@@ -1,31 +1,19 @@
 version: "2"
 services:
-  # 必须是小写
   daogucms-service:
     build:
       context: .
       dockerfile: Dockerfile
-    # 指定容器名称
     container_name: test
-    # 重启机制
     restart: always
-    # 必须是小写
     image: test:latest
     volumes:
-      - /home/app/libs/:/app/build/libs/
-      - /home/app/uploads/:/home/app/uploads/
-      - /home/app/logs/:/logs/
+      - ./libs/:/app/libs/
+      - ./uploads/:/home/app/uploads/
+      - ./logs/:/logs/
       - /etc/localtime:/etc/localtime
-
-#    ports:
-#      - "48080:48080"
-#    # 使用 network_mode: host 就不能再指定 ports
-    network_mode: "host"
-
+    ports:
+      - "48080:48080"
     environment:
-      # 指定时区
-      TZ: 'Asia/Shanghai'
-
-    # -Xms4g -Xmx12g (服务器 8核 16GB)
-    # -Xms1g -Xmx4g (服务器 4核 8GB)
-    entrypoint: nohup java -Dloader.path=/app/build/libs -jar /app/build/test.jar
+      TZ: "Asia/Shanghai"
+    entrypoint: ["java", "-Xms1g", "-Xmx4g", "-Dloader.path=/app/build", "-jar", "/app/build/test.jar"]