优化一键脚本
This commit is contained in:
+31
-1
@@ -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"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user