Jack 3 месяцев назад
Родитель
Сommit
83e5e128f1
4 измененных файлов с 123 добавлено и 1 удалено
  1. 23 0
      Dockerfile
  2. 88 0
      build.sh
  3. 11 0
      docker-compose.yaml
  4. 1 1
      requirements.txt

+ 23 - 0
Dockerfile

@@ -0,0 +1,23 @@
+# 使用官方 Python 运行时作为基础镜像
+FROM python:3.11-slim
+
+# 设置工作目录
+WORKDIR /app
+
+# 复制 requirements.txt 文件
+COPY requirements.txt .
+
+# 安装 Python 依赖
+RUN pip install --no-cache-dir -r requirements.txt
+
+# 复制项目文件
+COPY . .
+
+# 创建数据目录(如果不存在)
+RUN mkdir -p data
+
+# 暴露 FastAPI 默认端口
+EXPOSE 8000
+
+# 启动命令
+CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

+ 88 - 0
build.sh

@@ -0,0 +1,88 @@
+#!/bin/bash
+
+# Docker 镜像构建脚本
+# 使用方法: ./build.sh [选项]
+
+IMAGE_NAME="my-fastapi-app"
+TAG="latest"
+DOCKERFILE="Dockerfile"
+
+# 显示帮助信息
+show_help() {
+    echo "Docker 镜像构建脚本"
+    echo ""
+    echo "使用方法: $0 [选项]"
+    echo ""
+    echo "选项:"
+    echo "  -n, --name NAME     镜像名称 (默认: $IMAGE_NAME)"
+    echo "  -t, --tag TAG       镜像标签 (默认: $TAG)"
+    echo "  -f, --file FILE     Dockerfile 路径 (默认: $DOCKERFILE)"
+    echo "  --no-cache          构建时不使用缓存"
+    echo "  -h, --help         显示此帮助信息"
+    echo ""
+    echo "示例:"
+    echo "  $0                          # 使用默认配置构建"
+    echo "  $0 -n myapp -t v1.0        # 指定名称和标签"
+    echo "  $0 --no-cache              # 不使用缓存构建"
+}
+
+# 解析命令行参数
+while [[ $# -gt 0 ]]; do
+    case $1 in
+        -n|--name)
+            IMAGE_NAME="$2"
+            shift 2
+            ;;
+        -t|--tag)
+            TAG="$2"
+            shift 2
+            ;;
+        -f|--file)
+            DOCKERFILE="$2"
+            shift 2
+            ;;
+        --no-cache)
+            NO_CACHE="--no-cache"
+            shift
+            ;;
+        -h|--help)
+            show_help
+            exit 0
+            ;;
+        *)
+            echo "❌ 未知选项: $1"
+            show_help
+            exit 1
+            ;;
+    esac
+done
+
+# 检查 Dockerfile 是否存在
+if [ ! -f "$DOCKERFILE" ]; then
+    echo "❌ Dockerfile 不存在: $DOCKERFILE"
+    exit 1
+fi
+
+echo "🚀 开始构建 Docker 镜像..."
+echo "📦 镜像: $IMAGE_NAME:$TAG"
+echo "📄 Dockerfile: $DOCKERFILE"
+echo "⏰ 开始时间: $(date)"
+
+# 执行构建命令
+docker build $NO_CACHE -t $IMAGE_NAME:$TAG -f $DOCKERFILE .
+
+# 检查构建结果
+if [ $? -eq 0 ]; then
+    echo ""
+    echo "✅ 镜像构建成功!"
+    echo "📊 镜像信息:"
+    docker images | grep $IMAGE_NAME
+    
+    echo ""
+    echo "🎯 下一步操作:"
+    echo "   1. 使用 docker-compose up 启动服务"
+    echo "   2. 或者使用 docker run -p 8000:8000 $IMAGE_NAME:$TAG 运行容器"
+else
+    echo "❌ 镜像构建失败!"
+    exit 1
+fi

+ 11 - 0
docker-compose.yaml

@@ -0,0 +1,11 @@
+services:
+  eh-downloader:
+    image: eh-downloader:latest
+    container_name: eh-downloader
+    ports:
+      - "58001:8000"
+    volumes:
+      - ./data:/app/data
+    restart: unless-stopped
+    environment:
+      - PYTHONUNBUFFERED=1

+ 1 - 1
requirements.txt

@@ -1,4 +1,4 @@
-fastapi==0.104.1
+fastapi
 uvicorn==0.24.0
 aiofiles==23.2.1
 httpx==0.25.2