# 使用 Python 3.12.9 官方镜像 FROM python:3.12.9-slim # 系统优化与依赖和编译环境 RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ gcc \ autoconf \ make \ libssl-dev \ libffi-dev \ python3-dev \ && rm -rf /var/lib/apt/lists/* # 设置时区 ENV TZ=Asia/Shanghai # 创建应用目录 WORKDIR /app # 复制依赖清单 COPY requirements.txt . # 安装依赖 RUN pip install --no-cache-dir -r requirements.txt # 复制项目代码 COPY . . # 创建日志目录(即使宿主机未挂载也能运行) RUN mkdir -p /app/logs RUN chmod +x /app/start.sh # 启动环境(默认 prod) ENV APP_ENV=prod # Entrypoint 会根据 APP_ENV 动态决定配置文件 # 这里不直接启动 gunicorn,而是用 start.sh 控制日志等 ENTRYPOINT ["bash", "start.sh"] #----------------------------------------------- # 基于你自己的基础镜像 FROM uswccr.ccs.tencentyun.com/lessie/python:3.12.9-base LABEL maintainer="lessie " ENV TZ=Asia/Shanghai WORKDIR /app # 拷贝依赖文件并安装依赖 COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # 拷贝项目代码 COPY . . # 创建日志目录 RUN mkdir -p /app/logs && chmod +x /app/start.sh # 环境变量(可在 compose 覆盖) ENV APP_ENV=local # 启动命令 ENTRYPOINT ["bash", "start.sh"] #----------------------------------------------- # docker build -t lessie/lessie-sourcing-agents:v0.0.1 . # docker images | grep lessie # docker tag lessie/lessie-sourcing-agents:v0.0.1 uswccr.ccs.tencentyun.com/lessie/lessie-sourcing-agents:v0.0.1 # docker push uswccr.ccs.tencentyun.com/lessie/lessie-sourcing-agents:v0.0.1 # -------------------------- # Stage 1: Builder # -------------------------- FROM uswccr.ccs.tencentyun.com/lessie/python:3.12.9-base AS builder LABEL maintainer="lessie " ENV TZ=Asia/Shanghai WORKDIR /app # 拷贝依赖文件并安装依赖到 /app/deps COPY requirements.txt . RUN pip install --no-cache-dir --prefix=/app/deps -r requirements.txt # -------------------------- # Stage 2: Runtime # -------------------------- # 最终运行镜像,用 slim 最小化 FROM python:3.12.9-slim ENV TZ=Asia/Shanghai WORKDIR /app # 拷贝已安装的依赖 COPY --from=builder /app/deps /usr/local # 拷贝项目代码 COPY . . # 创建日志目录 RUN mkdir -p /app/logs && chmod +x /app/start.sh # 环境变量(可在 docker-compose 覆盖) ENV APP_ENV=local # 启动命令 ENTRYPOINT ["bash", "start.sh"]