Sign inSign up

5200710/fastapi

By 5200710

•Updated about 1 month ago

build the custom fastapi image

Image
0

3.5K

5200710/fastapi repository overview

⁠Docker 构建指南

本项目使用单个 Dockerfile 实现前后端一体化部署。

⁠快速开始

⁠方式一:使用构建脚本
# 构建镜像(默认名称和标签)
./docker/build.sh

# 或指定镜像名称和标签
./docker/build.sh myfastapi v1.0.0

# 运行容器
docker run -d -p 8000:8000 --env-file .env --name myfastapi myfastapi:latest
⁠方式二:使用 Docker Compose
# 构建并启动
docker-compose up -d --build

# 或使用生产配置
docker-compose -f compose.prod.yaml up -d --build
⁠方式三:手动构建
# 构建镜像
docker build -f docker/dockerfile -t myfastapi:latest .

# 运行容器
docker run -d -p 8000:8000 --env-file .env --name myfastapi myfastapi:latest

⁠构建过程

⁠多阶段构建
  1. 前端构建阶段:

    • 使用 node:22-alpine 镜像
    • 安装前端依赖
    • 执行 npm run build 构建前端
    • 生成 frontend/dist/ 目录
  2. 后端构建阶段:

    • 使用 python:3.14.4-slim 镜像
    • 安装 Python 依赖
    • 复制后端代码
    • 从第一阶段复制前端构建产物
⁠容器内文件结构
/app
├── api/              # FastAPI 后端代码
│   ├── index.py     # 主应用(已配置静态文件服务)
│   └── ...
├── frontend/
│   └── dist/        # 前端构建产物
│       ├── index.html
│       ├── assets/
│       └── ...
└── requirements.txt

⁠环境变量配置

在 .env 文件中设置:

# 重要:设置为 production 才会服务前端静态文件
ENVIRONMENT=production

# 数据库配置
DATABASE_TYPE=mysql
DATABASE_HOST=postgresql
DATABASE_PORT=5432
DATABASE_USER=postgres
DATABASE_PASSWORD=your-password
DATABASE_NAME=myfastapi

# API 配置
API_V1_STR=/api/v1
SECRET_KEY=your-secret-key

重要:ENVIRONMENT=production 必须设置,否则前端静态文件不会被服务。

⁠验证部署

⁠1. 检查容器状态
docker ps | grep myfastapi
⁠2. 查看日志
docker logs myfastapi
⁠3. 访问应用
⁠4. 验证前端文件
docker exec myfastapi ls -la /app/frontend/dist/

⁠常见问题

⁠Q: 前端页面无法访问?

A: 检查以下几点:

  1. 确认 ENVIRONMENT=production 已设置
  2. 检查 frontend/dist/ 目录是否存在
  3. 查看容器日志:docker logs myfastapi
⁠Q: 构建时前端构建失败?

A:

  1. 检查 frontend/package.json 是否正确
  2. 确保 frontend/ 目录下有所有必要的文件
  3. 查看构建日志中的错误信息
⁠Q: 如何更新代码?

A: 重新构建镜像:

# 停止容器
docker stop myfastapi
docker rm myfastapi

# 重新构建
docker build -f docker/dockerfile -t myfastapi:latest .

# 启动新容器
docker run -d -p 8000:8000 --env-file .env --name myfastapi myfastapi:latest

Tag summary

Content type

Image

Digest

sha256:b63b12331…

Size

154.3 MB

Last updated

about 2 months ago

docker pull 5200710/fastapi