Python 多阶段 docker 容器 - 本地包
Python multi stage docker container - local package
我正在 运行 为我的 python 容器构建多阶段 docker。
我的第一个构建步骤安装了 requirements.txt
中的所有依赖项
##################
## Python Builder Image
##################
FROM python:3.10 AS python-builder
# create and activate virtual environment
# using final folder name to avoid path issues with packages
ENV VIRTUAL_ENV="/home/app_user/venv"
RUN python3 -m venv $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
# install requirements
COPY requirements.txt .
COPY package/ package/
RUN pip3 install --upgrade pip==21.3.1
RUN pip3 install --no-cache-dir -r requirements.txt
requirements.txt 包含安装包的 -e 命令。
当我构建我的最终容器镜像时,应用程序抛出一个错误,指出找不到我的包。
##################
## Final Image
##################
FROM python:3.10-alpine3.14 as app
ENV VIRTUAL_ENV="/home/app_user/venv"
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
ENV PIP_DISABLE_PIP_VERSION_CHECK=1
USER app_user
WORKDIR /home/app_user/code
COPY --from=node-builder /imports /imports
COPY main.py config.py ./
COPY scripts/ scripts/
CMD gunicorn main:flask_app --worker-tmp-dir /dev/shm -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:$PORT
错误:
ModuleNotFoundError: No module named 'package'
有什么想法吗?
已通过在构建器映像中正确安装包来修复:
# install requirements
COPY requirements.txt .
COPY package/ package/
RUN pip3 install --upgrade pip==21.3.1
RUN pip3 install ./package
RUN pip3 install --no-cache-dir -r requirements.txt
与之前相比,requirements.txt:
constructs==10.0.9
authlib==0.11
flask==2.0.2
uvicorn[standard]==0.15.0
gunicorn==20.1.0
virtualenv
-e package ## didn't like this
我正在 运行 为我的 python 容器构建多阶段 docker。
我的第一个构建步骤安装了 requirements.txt
中的所有依赖项##################
## Python Builder Image
##################
FROM python:3.10 AS python-builder
# create and activate virtual environment
# using final folder name to avoid path issues with packages
ENV VIRTUAL_ENV="/home/app_user/venv"
RUN python3 -m venv $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
# install requirements
COPY requirements.txt .
COPY package/ package/
RUN pip3 install --upgrade pip==21.3.1
RUN pip3 install --no-cache-dir -r requirements.txt
requirements.txt 包含安装包的 -e 命令。 当我构建我的最终容器镜像时,应用程序抛出一个错误,指出找不到我的包。
##################
## Final Image
##################
FROM python:3.10-alpine3.14 as app
ENV VIRTUAL_ENV="/home/app_user/venv"
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
ENV PIP_DISABLE_PIP_VERSION_CHECK=1
USER app_user
WORKDIR /home/app_user/code
COPY --from=node-builder /imports /imports
COPY main.py config.py ./
COPY scripts/ scripts/
CMD gunicorn main:flask_app --worker-tmp-dir /dev/shm -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:$PORT
错误:
ModuleNotFoundError: No module named 'package'
有什么想法吗?
已通过在构建器映像中正确安装包来修复:
# install requirements
COPY requirements.txt .
COPY package/ package/
RUN pip3 install --upgrade pip==21.3.1
RUN pip3 install ./package
RUN pip3 install --no-cache-dir -r requirements.txt
与之前相比,requirements.txt:
constructs==10.0.9
authlib==0.11
flask==2.0.2
uvicorn[standard]==0.15.0
gunicorn==20.1.0
virtualenv
-e package ## didn't like this