zhanghui vor 1 Monat
Ursprung
Commit
003c2eb8d5
2 geänderte Dateien mit 48 neuen und 0 gelöschten Zeilen
  1. 20 0
      Dockerfile
  2. 28 0
      docker-compose.yml

+ 20 - 0
Dockerfile

@@ -0,0 +1,20 @@
+# 基础镜像:使用 Python 3.9 轻量版本(slim 减少镜像体积,适合生产/测试环境)
+FROM python:3.9-slim
+
+# 设置工作目录(容器内的目录,统一管理项目文件)
+WORKDIR /app
+
+# 复制项目依赖文件到工作目录(先复制 requirements.txt 可利用 Docker 缓存,后续修改代码无需重新安装依赖)
+COPY requirements.txt .
+
+# 安装依赖(--no-cache-dir 避免缓存依赖包,减少镜像体积)
+RUN pip install --no-cache-dir -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
+
+# 复制整个项目代码到工作目录(包括 main.py 等所有文件)
+COPY . .
+
+# 暴露容器端口(对应 main.py 中配置的 5500 端口,仅声明,不实际映射)
+EXPOSE 5500
+
+# 容器启动命令(启动 Python 脚本,注意:flask 直接运行仅适合测试,生产环境可改用 gunicorn,下文有说明)
+CMD ["python", "main.py"]

+ 28 - 0
docker-compose.yml

@@ -0,0 +1,28 @@
+version: '3.8'  # Docker Compose 版本(兼容主流 Docker 版本)
+
+services:
+  # 服务名称(自定义,如 fsatest-api)
+  fsatest-api:
+    # 构建配置(基于本地 Dockerfile 构建镜像)
+    build:
+      context: .  # 构建上下文:当前目录(即项目根目录)
+      dockerfile: Dockerfile  # 指定 Dockerfile 文件名(默认就是 Dockerfile,可省略)
+    # 镜像标签(可选,方便后续管理)
+    image: fsatest:${BUILD_NUMBER:-latest}  # 优先用 Jenkins 构建号,无则默认 latest
+    # 容器名称(自定义,避免冲突)
+    container_name: fsatest-container
+    # 端口映射:主机端口:容器端口(和 main.py 端口、Dockerfile EXPOSE 保持一致)
+    ports:
+      - "5500:5500"
+    # 重启策略:容器异常退出时自动重启(测试/生产环境推荐)
+    restart: always
+    # 日志配置(可选,避免日志过大)
+    logging:
+      driver: "json-file"
+      options:
+        max-size: "10m"  # 单个日志文件最大 10MB
+        max-file: "3"    # 最多保留 3 个日志文件
+    # 环境变量(可选,后续扩展用,如修改端口、配置环境等)
+    environment:
+      - FLASK_ENV=production  # Flask 运行环境(生产环境)
+      - PORT=5500  # 端口变量(和 main.py 保持一致,若后续脚本支持读取环境变量可直接使用)