docker打包python应用
FROM 172.17.128.132/base/python:3.10-slim
WORKDIR /app/
# 安装系统依赖
# RUN apt-get update && apt-get install -y --no-install-recommends \
# build-essential \
# && rm -rf /var/lib/apt/lists/*
# 安装Poetry
RUN pip install --index-url http://172.17.128.132:8080/simple --trusted-host 172.17.128.132 pip -U && \
pip config set global.index-url http://172.17.128.132:8080/simple && \
pip install poetry --index-url http://172.17.128.132:8080/simple --trusted-host 172.17.128.132 && \
poetry config virtualenvs.create false
# 复制依赖配置文件
COPY ./pyproject.toml ./poetry.lock* /app/
RUN poetry config repositories.m-repo https://mirrors.huaweicloud.com/repository/pypi/simple/ && \
poetry source add --priority=primary m-repo https://mirrors.huaweicloud.com/repository/pypi/simple/
# 简化依赖安装 - 直接安装所有依赖
RUN poetry lock --no-update
RUN poetry install --no-root && pip list
# 确保关键依赖一定存在
RUN pip install sqlalchemy sqlmodel alembic gunicorn --index-url http://172.17.128.132:8080/simple --trusted-host 172.17.128.132
ENV PYTHONPATH=/app
# 复制应用代码和脚本
COPY ./app /app/app
COPY ./static /app/static
COPY ./scripts /app/scripts
COPY ./alembic.ini /app/
COPY ./prestart.sh /app/
COPY ./start.sh /start.sh
COPY ./start-reload.sh /start-reload.sh
# 使脚本可执行
RUN chmod +x /start.sh /start-reload.sh /app/prestart.sh
# 设置默认命令
CMD ["/start.sh"]