优化一键脚本

This commit is contained in:
yml2213
2026-06-28 21:23:26 +08:00
parent c92cd03b8c
commit 782a5cbd02
5 changed files with 31 additions and 2328 deletions
+31 -1
View File
@@ -64,6 +64,7 @@ show_help() {
--reset-db 重置数据库(删除并重建)
--logs 部署完成后跟随查看后端日志
--skip-check 跳过部署前代码门禁(不推荐)
--no-clean 跳过部署后的 Docker 垃圾清理
-h, --help 显示帮助信息
环境变量:
@@ -87,6 +88,7 @@ NO_MIGRATE=0
RESET_DB=0
FOLLOW_LOGS=0
SKIP_CHECK=0
NO_CLEAN=0
while [[ $# -gt 0 ]]; do
case "$1" in
@@ -110,6 +112,10 @@ while [[ $# -gt 0 ]]; do
SKIP_CHECK=1
shift
;;
--no-clean)
NO_CLEAN=1
shift
;;
-h|--help)
show_help
exit 0
@@ -319,6 +325,23 @@ wait_http_ready() {
exit 1
}
# 清理部署过程中产生的 Docker 垃圾(旧镜像、构建缓存)
# 每次 docker compose build 会生成新镜像,旧镜像变为 <none>:<none>
# 构建缓存(BuildKit)也会持续增长,不清理会轻松堆积几十 GB
docker_cleanup() {
log "清理 Docker 垃圾..."
local before after
before=$(docker system df --format '{{.TotalCount}}' 2>/dev/null || echo "?")
docker image prune -f 2>/dev/null || true
docker builder prune -f 2>/dev/null || true
after=$(docker system df --format '{{.TotalCount}}' 2>/dev/null || echo "?")
log_success "Docker 清理完成(对象数: ${before} -> ${after}"
}
main() {
cd "${ROOT_DIR}"
need_cmd docker
@@ -348,6 +371,9 @@ main() {
log "启动生产服务..."
compose up -d
else
log "清理旧镜像以释放空间..."
docker image prune -f 2>/dev/null || true
log "构建后端镜像..."
compose build backend
@@ -355,7 +381,7 @@ main() {
compose build caddy
log "启动生产服务..."
compose up -d --no-build
compose up -d --no-build --remove-orphans
fi
wait_service_healthy mysql "MySQL"
@@ -372,6 +398,10 @@ main() {
wait_service_healthy caddy "Caddy"
wait_http_ready
if [[ "${NO_CLEAN}" != "1" ]]; then
docker_cleanup
fi
log_success "部署完成:$(public_url)"
log "常用命令:$(compose_user_cmd) logs -f caddy backend"