chore: add Drone CI/CD, docker-compose, deploy script and update Dockerfile to Java 21

This commit is contained in:
mediabot-pt
2026-06-29 10:49:09 +08:00
parent baa04b5138
commit 5b86621f81
5 changed files with 150 additions and 2 deletions

34
.dockerignore Normal file
View File

@@ -0,0 +1,34 @@
# 构建产物
target/
*/target/
# IDE
.idea/
*.iml
.vscode/
# Git
.git/
.gitignore
# 文档
README.md
docs/
# 数据与日志
data/
logs/
static/
# 脚本(不需要打包进镜像)
*.sh
deploy.sh
run.sh
# CI/CD
.drone.yml
docker-compose.yml
# 其他
*.md
*.log

50
.drone.yml Normal file
View File

@@ -0,0 +1,50 @@
kind: pipeline
type: docker
name: default
trigger:
branch:
- master
event:
- push
steps:
- name: maven-package
image: maven:3-eclipse-temurin-21-alpine
volumes:
- name: maven-cache
path: /root/.m2
commands:
- mvn clean package -DskipTests -B
- name: docker-build-and-push
image: plugins/docker
settings:
registry: 192.168.31.253
repo: 192.168.31.253/yescent/par
tags: latest
dockerfile: par-api/Dockerfile
username:
from_secret: harbor_username
password:
from_secret: harbor_password
- name: deploy
image: appleboy/drone-ssh
settings:
host: 192.168.31.252
username:
from_secret: ssh_username
password:
from_secret: ssh_password
port: 22
script:
- cd /data/par
- ./deploy.sh
command_timeout: 2m
timeout: 2m
volumes:
- name: maven-cache
host:
path: /tmp/drone/cache/maven

32
deploy.sh Normal file
View File

@@ -0,0 +1,32 @@
# PAR Server 部署脚本
# 用法: ./deploy.sh [version]
set -e
HARBOR="192.168.31.253"
PROJECT="yescent"
VERSION=${1:-latest}
echo "====== 开始部署 PAR Server ======"
echo "版本: $VERSION"
# 登录 Harbor
docker login $HARBOR
# 拉取镜像
docker pull $HARBOR/$PROJECT/par:$VERSION
# 停止旧容器
docker compose down 2>/dev/null || true
# 启动新容器
docker compose up -d
# 等待健康检查
echo "等待服务启动..."
sleep 15
# 验证部署
curl -s http://localhost:${APP_PORT:-9012}/health && echo " 部署成功" || echo " 部署异常"
echo "====== 部署完成 ======"

32
docker-compose.yml Normal file
View File

@@ -0,0 +1,32 @@
version: '3.8'
services:
app:
image: 192.168.31.253/yescent/par:latest
container_name: par-server
restart: unless-stopped
ports:
- "${APP_PORT:-9012}:8080"
volumes:
- ${DATA_ROOT:-./data}/static/configs:/app/static/configs
- ${DATA_ROOT:-./data}/static/admin:/app/static/admin
- ${LOG_ROOT:-./logs}:/app/logs
environment:
TZ: "Asia/Shanghai"
JAVA_OPTS: "-Xms256m -Xmx512m"
MYSQL_HOST: "${MYSQL_HOST:-host.docker.internal}"
MYSQL_PORT: "${MYSQL_PORT:-3306}"
MYSQL_DB: "${MYSQL_DB:-par_registry}"
MYSQL_USER: "${MYSQL_USER:-root}"
MYSQL_PASSWORD: "${MYSQL_PASSWORD:-root}"
HMAC_SECRET: "${HMAC_SECRET:-}"
PAR_STATIC_PATH: "/app/static"
PAR_ADMIN_PATH: "/app/static/admin"
extra_hosts:
- "host.docker.internal:host-gateway"
healthcheck:
test: ["CMD", "wget", "-qO-", "http://localhost:8080/health"]
interval: 30s
timeout: 5s
retries: 3
start_period: 60s

View File

@@ -2,7 +2,7 @@
# Phase 1: 最小可用版本
# 构建阶段
FROM eclipse-temurin:17-jdk-alpine AS builder
FROM eclipse-temurin:21-jdk-alpine AS builder
WORKDIR /build
@@ -28,7 +28,7 @@ RUN apk add --no-cache maven && \
cp par-api/target/*.jar target/app.jar
# 运行阶段
FROM eclipse-temurin:17-jre-alpine
FROM eclipse-temurin:21-jre-alpine
LABEL maintainer="PAR Team"
LABEL description="PT Adapter Registry Server"