From 68ff828505d3822ed9f833c86b75d798982f4801 Mon Sep 17 00:00:00 2001 From: fawney19 Date: Thu, 8 Jan 2026 01:28:36 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=B9=E5=99=A8=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E6=97=B6=E8=87=AA=E5=8A=A8=E6=89=A7=E8=A1=8C=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E8=BF=81=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 entrypoint.sh 在容器启动前执行 alembic upgrade head - 更新 Dockerfile.app 和 Dockerfile.app.local 使用新入口脚本 - 移除手动迁移脚本 migrate.sh - 简化 README 部署说明 --- Dockerfile.app | 5 +++++ Dockerfile.app.local | 5 +++++ README.md | 10 ++-------- entrypoint.sh | 8 ++++++++ migrate.sh | 12 ------------ 5 files changed, 20 insertions(+), 20 deletions(-) create mode 100644 entrypoint.sh delete mode 100755 migrate.sh diff --git a/Dockerfile.app b/Dockerfile.app index b27e56f..e46be91 100644 --- a/Dockerfile.app +++ b/Dockerfile.app @@ -147,6 +147,10 @@ RUN printf '%s\n' \ # 创建目录 RUN mkdir -p /var/log/supervisor /app/logs /app/data +# 入口脚本(启动前执行迁移) +COPY entrypoint.sh /entrypoint.sh +RUN chmod +x /entrypoint.sh + # 环境变量 ENV PYTHONUNBUFFERED=1 \ PYTHONDONTWRITEBYTECODE=1 \ @@ -161,4 +165,5 @@ EXPOSE 80 HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ CMD curl -f http://localhost/health || exit 1 +ENTRYPOINT ["/entrypoint.sh"] CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"] diff --git a/Dockerfile.app.local b/Dockerfile.app.local index 73c8409..fb9a09a 100644 --- a/Dockerfile.app.local +++ b/Dockerfile.app.local @@ -139,6 +139,10 @@ RUN printf '%s\n' \ # 创建目录 RUN mkdir -p /var/log/supervisor /app/logs /app/data +# 入口脚本(启动前执行迁移) +COPY entrypoint.sh /entrypoint.sh +RUN chmod +x /entrypoint.sh + # 环境变量 ENV PYTHONUNBUFFERED=1 \ PYTHONDONTWRITEBYTECODE=1 \ @@ -152,4 +156,5 @@ EXPOSE 80 HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ CMD curl -f http://localhost/health || exit 1 +ENTRYPOINT ["/entrypoint.sh"] CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"] diff --git a/README.md b/README.md index 52fd44b..9f65b78 100644 --- a/README.md +++ b/README.md @@ -57,14 +57,8 @@ cd Aether cp .env.example .env python generate_keys.py # 生成密钥, 并将生成的密钥填入 .env -# 3. 部署 -docker compose up -d - -# 4. 首次部署时, 初始化数据库 -./migrate.sh - -# 5. 更新 -docker compose pull && docker compose up -d && ./migrate.sh +# 3. 部署 / 更新(自动执行数据库迁移) +docker compose pull && docker compose up -d ``` ### Docker Compose(本地构建镜像) diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 0000000..98b8b73 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,8 @@ +#!/bin/bash +set -e + +echo "Running database migrations..." +alembic upgrade head + +echo "Starting application..." +exec "$@" diff --git a/migrate.sh b/migrate.sh deleted file mode 100755 index 532bf66..0000000 --- a/migrate.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -# 数据库迁移脚本 - 在 Docker 容器内执行 Alembic 迁移 - -set -e - -CONTAINER_NAME="aether-app" - -echo "Running database migrations in container: $CONTAINER_NAME" - -docker exec $CONTAINER_NAME alembic upgrade head - -echo "Database migration completed successfully"