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"