chore: 完善全栈 Docker 开发环境与容器基础设施
This commit is contained in:
23
backend/Dockerfile.dev
Normal file
23
backend/Dockerfile.dev
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# ============================================================
|
||||||
|
# 后端开发 Dockerfile — FastAPI + Uvicorn 热更新
|
||||||
|
# ============================================================
|
||||||
|
FROM python:3.13-slim
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# 系统依赖(Pillow / cryptography 编译所需)
|
||||||
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
|
gcc \
|
||||||
|
libpq-dev \
|
||||||
|
libffi-dev \
|
||||||
|
libjpeg-dev \
|
||||||
|
zlib1g-dev \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# 先装 Python 依赖(利用 Docker 缓存层,改代码不重装)
|
||||||
|
COPY requirements.txt .
|
||||||
|
RUN pip install --no-cache-dir -r requirements.txt
|
||||||
|
|
||||||
|
# 代码通过 docker-compose volumes 挂载,不需要 COPY
|
||||||
|
# --reload 监听代码变化自动重启
|
||||||
|
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000", "--reload"]
|
||||||
@ -1,19 +1,24 @@
|
|||||||
# ============================================================
|
# ============================================================
|
||||||
# 生产流转管理系统 — PostgreSQL 15 + pgvector
|
# 生产流转管理系统 — 全栈 Docker 热更新开发环境
|
||||||
# 独立于老系统数据库,通过逻辑外键关联 user / material
|
# 启动: docker compose up -d --build
|
||||||
|
# 停止: docker compose down
|
||||||
|
# 日志: docker compose logs -f
|
||||||
# ============================================================
|
# ============================================================
|
||||||
|
|
||||||
services:
|
services:
|
||||||
track_db_prod:
|
# ============================================================
|
||||||
|
# PostgreSQL 15 + pgvector
|
||||||
|
# ============================================================
|
||||||
|
db:
|
||||||
image: pgvector/pgvector:pg15
|
image: pgvector/pgvector:pg15
|
||||||
container_name: track_db_prod
|
container_name: track_db
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_USER: track
|
POSTGRES_USER: track
|
||||||
POSTGRES_PASSWORD: track_prod_2026
|
POSTGRES_PASSWORD: track_prod_2026
|
||||||
POSTGRES_DB: track_production
|
POSTGRES_DB: track_production
|
||||||
ports:
|
ports:
|
||||||
- "5433:5432" # 避开老系统 5432 端口
|
- "8012:5432"
|
||||||
volumes:
|
volumes:
|
||||||
- track_pgdata:/var/lib/postgresql/data
|
- track_pgdata:/var/lib/postgresql/data
|
||||||
healthcheck:
|
healthcheck:
|
||||||
@ -22,6 +27,57 @@ services:
|
|||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 5
|
retries: 5
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# FastAPI 后端 — --reload 热更新
|
||||||
|
# ============================================================
|
||||||
|
backend:
|
||||||
|
build:
|
||||||
|
context: ./backend
|
||||||
|
dockerfile: Dockerfile.dev
|
||||||
|
container_name: track_backend
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
DATABASE_URL: postgresql+asyncpg://track:track_prod_2026@db:5432/track_production
|
||||||
|
SECRET_KEY: change-me-in-production
|
||||||
|
DEBUG: "true"
|
||||||
|
CORS_ORIGINS: '["http://localhost:8010","https://localhost:8010","http://192.168.9.80:8010","https://192.168.9.80:8010","tauri://localhost"]'
|
||||||
|
MOM_DB_HOST: 172.20.0.3
|
||||||
|
MOM_DB_PORT: "5432"
|
||||||
|
ports:
|
||||||
|
- "8011:8000"
|
||||||
|
volumes:
|
||||||
|
- ./backend:/app
|
||||||
|
depends_on:
|
||||||
|
db:
|
||||||
|
condition: service_healthy
|
||||||
|
networks:
|
||||||
|
- default
|
||||||
|
- mom_net
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# Vite + React 前端 — HMR 热更新
|
||||||
|
# ============================================================
|
||||||
|
frontend:
|
||||||
|
build:
|
||||||
|
context: ./frontend
|
||||||
|
dockerfile: Dockerfile.dev
|
||||||
|
container_name: track_frontend
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
VITE_API_BASE_URL: /api/v1
|
||||||
|
ports:
|
||||||
|
- "8010:1420"
|
||||||
|
volumes:
|
||||||
|
- ./frontend:/app
|
||||||
|
- /app/node_modules # 匿名卷,不覆盖容器里的 node_modules
|
||||||
|
depends_on:
|
||||||
|
- backend
|
||||||
|
|
||||||
|
networks:
|
||||||
|
mom_net:
|
||||||
|
external: true
|
||||||
|
name: inventory-backend_default
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
track_pgdata:
|
track_pgdata:
|
||||||
name: track_pgdata
|
name: track_pgdata
|
||||||
|
|||||||
13
frontend/Dockerfile.dev
Normal file
13
frontend/Dockerfile.dev
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
# ============================================================
|
||||||
|
# 前端开发 Dockerfile — Vite + React HMR 热更新
|
||||||
|
# ============================================================
|
||||||
|
FROM node:20-alpine
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# 先装依赖(利用 Docker 缓存层)
|
||||||
|
COPY package.json package-lock.json ./
|
||||||
|
RUN npm install
|
||||||
|
|
||||||
|
# 代码通过 docker-compose volumes 挂载
|
||||||
|
CMD ["npx", "vite", "--host", "0.0.0.0"]
|
||||||
Reference in New Issue
Block a user