chore: add Drone CI/CD, docker-compose, deploy script and update Dockerfile to Java 21
This commit is contained in:
34
.dockerignore
Normal file
34
.dockerignore
Normal 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
50
.drone.yml
Normal 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
32
deploy.sh
Normal 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
32
docker-compose.yml
Normal 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
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
# Phase 1: 最小可用版本
|
# Phase 1: 最小可用版本
|
||||||
|
|
||||||
# 构建阶段
|
# 构建阶段
|
||||||
FROM eclipse-temurin:17-jdk-alpine AS builder
|
FROM eclipse-temurin:21-jdk-alpine AS builder
|
||||||
|
|
||||||
WORKDIR /build
|
WORKDIR /build
|
||||||
|
|
||||||
@@ -28,7 +28,7 @@ RUN apk add --no-cache maven && \
|
|||||||
cp par-api/target/*.jar target/app.jar
|
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 maintainer="PAR Team"
|
||||||
LABEL description="PT Adapter Registry Server"
|
LABEL description="PT Adapter Registry Server"
|
||||||
|
|||||||
Reference in New Issue
Block a user