diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..359ff38 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,26 @@ +# Docker相关文件 +.env +.env.docker + +# 日志目录 +logs/ +*.log + +# 开发文件 +.git/ +.gitignore +README.md +DOCKER.md + +# Python缓存 +__pycache__/ +*.pyc +*.pyo +*.pyd +.Python +*.so + +# 虚拟环境 +venv/ +.venv/ +env/ \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..f0359f0 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,34 @@ +# 使用官方Python运行时作为基础镜像 +FROM python:3.11-slim + +# 设置工作目录 +WORKDIR /app + +# 设置环境变量 +ENV PYTHONPATH=/app +ENV PYTHONUNBUFFERED=1 + +# 安装系统依赖 +RUN apt-get update && apt-get install -y \ + gcc \ + default-libmysqlclient-dev \ + pkg-config \ + && rm -rf /var/lib/apt/lists/* + +# 复制依赖文件 +COPY requirements.txt . + +# 安装Python依赖 +RUN pip install --no-cache-dir -r requirements.txt + +# 复制应用代码 +COPY . . + +# 创建日志目录 +RUN mkdir -p /app/logs + +# 暴露端口 +EXPOSE 8000 + +# 启动命令 +CMD ["python", "-m", "uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000", "--access-log"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..1f763aa --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,15 @@ +version: '3.8' + +services: + # 铁路项目管理系统 - FastAPI应用 + tielu-app: + build: . + container_name: tielu-railway-app + ports: + - "3002:8000" + volumes: + # 日志文件映射 + - ./logs:/app/logs + # 配置文件映射 + - ./.env:/app/.env:ro + restart: unless-stopped \ No newline at end of file