Browse Source

修改配置

cuiHe 1 week ago
parent
commit
07b9fa4553
2 changed files with 54 additions and 5 deletions
  1. 0 2
      backend/main.py
  2. 54 3
      devops/backend/Dockerfile

+ 0 - 2
backend/main.py

@@ -102,8 +102,6 @@ def upgrade(env: Annotated[EnvironmentEnum, typer.Option("--env", help="运行
     command.upgrade(alembic_cfg, "head")
     typer.echo("所有迁移已应用。")
 
-
 if __name__ == '__main__':
-    
     fastapiadmin_cli()
 

+ 54 - 3
devops/backend/Dockerfile

@@ -1,5 +1,5 @@
-# 使用官方的 Python 3.10 镜像作为基础镜像
-FROM python:3.10
+# 第一阶段:构建(包含源码,用于打包)
+FROM python:3.10 as builder
 
 # 使用 LABEL 替代 MAINTAINER
 LABEL maintainer="CuiHongEn"
@@ -10,14 +10,65 @@ ENV TZ Asia/Shanghai
 # 设置容器内工作目录
 WORKDIR /home
 
+# 安装系统依赖(打包需要)
+RUN apt-get update && apt-get install -y --no-install-recommends \
+    gcc \
+    && rm -rf /var/lib/apt/lists/*
+
 # 将当前主机目录全部文件复制至容器工作目录
 COPY ./backend/requirements.txt .
 
 # 安装依赖
 RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
 
+# 复制项目源码(仅构建阶段需要)
+COPY . .
+
+# 使用PyInstaller打包(重点:指定入口为main.py的cli命令)
+# 注意:--hidden-import需根据实际依赖补充(动态导入的模块)
+RUN pyinstaller --name=hd_crane_gs \
+    --onefile \
+    # Uvicorn相关
+    --hidden-import=uvicorn.logging \
+    --hidden-import=uvicorn.loops \
+    --hidden-import=uvicorn.loops.auto \
+    --hidden-import=uvicorn.protocols \
+    --hidden-import=uvicorn.protocols.http \
+    --hidden-import=uvicorn.protocols.http.auto \
+    --hidden-import=uvicorn.protocols.websockets \
+    --hidden-import=uvicorn.protocols.websockets.auto \
+    --hidden-import=uvicorn.lifespan \
+    --hidden-import=uvicorn.lifespan.on \
+    # Alembic相关
+    --hidden-import=alembic.autogenerate \
+    --hidden-import=alembic.runtime.migration \
+    --hidden-import=alembic.runtime.environment \
+    # 项目内部模块(根据实际结构补充)
+    --hidden-import=app.config.setting \
+    --hidden-import=app.plugin.init_app \
+    --hidden-import=app.core.logger \
+    --hidden-import=app.utils.banner \
+    --hidden-import=app.utils.console \
+    --hidden-import=app.common.enums \
+    # 若有其他路由/模块,继续补充
+    --hidden-import=app.routers.xxx \  # 示例:替换为实际路由模块
+    main.py
+# 第二阶段:运行(仅包含运行时,无源码)
+FROM python:3.10
+
+# 设置工作目录
+WORKDIR /home
+
+# 从构建阶段复制打包后的可执行文件
+COPY --from=builder /app/dist/fastapiadmin .
+
+# 复制Alembic迁移脚本(如果需要运行migrate命令)
+# 注意:只复制迁移脚本目录,不含源码
+COPY --from=builder /app/alembic /app/alembic
+COPY --from=builder /app/alembic.ini /app/alembic.ini
+
 # 运行应用
-CMD ["python", "main.py", "run", "--env=prod"]
+CMD ["./hd_crane_gs", "run", "--env=prod"]
 
 # 暴露端口
 EXPOSE 8001