首页 > 解决方案 > 多阶段 Dockerfile Python

问题描述

所以我在这里遇到了麻烦,我已经部署了我的多级 dockerfile python:3.8-slim-buster,但是我无法访问这个 URL?我的 Dockerfile 有问题吗?

# Build Image
FROM python:3.8-slim-buster as builder

RUN apt-get update --fix-missing
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y libgl1-mesa-dev python3-pip git
RUN mkdir /usr/src/app

WORKDIR /usr/src/app

COPY ./requirements.txt /usr/src/app/requirements.txt

RUN pip3 install -U setuptools
RUN pip3 install --upgrade pip
RUN pip3 install -r ./requirements.txt

COPY . /usr/src/app

# Production Image
FROM python:3.8-slim-buster as app

COPY --from=builder /usr/src/app /usr/src/app

WORKDIR /usr/src/app

ENTRYPOINT gunicorn --bind 0.0.0.0:1500 --workers 1 --threads 8 main:app --worker-class uvicorn.workers.UvicornH11Worker --preload --timeout 60 --worker-tmp-dir /dev/shm

这就是我运行 Docker 的方式:

sudo docker build -t priceengine .
sudo docker run -dp 1500:1500 priceengine
sudo docker start 2d7f96017801

那么,我# Production Image是对的吗?

标签: pythondockerdockerfiledocker-multi-stage-build

解决方案


我假设您的应用程序依赖于已安装的软件包,如果是这样,它将不适用于构建的多阶段。多阶段构建仅有助于避免将构建时依赖项添加到最终映像。在这里,您需要运行时的apt包和requirements.txt包(ENTRYPOINT)。只需为此使用普通的 Dockerfile(无多级)。


推荐阅读