我可以使用以下简单的Dockerfile
为我的python应用程序生成工作图像:
FROM python:3.7
WORKDIR /myapp
COPY Pipfile* ./
RUN pip install pipenv
RUN pipenv install --system --deploy
COPY src .
CMD ["python3", "app.py"]
但是,它将产生约1 GB的映像,其中可能包含临时文件,并且部署繁重。而且我只需要完整的python图像即可构建。我的应用程序可以在高山版本上成功运行,因此我可以进行两次通过Dockerfile
:
FROM python:3.7 as builder
COPY Pipfile* ./
RUN pipenv lock --requirements > requirements.txt
RUN python3 -m venv /venv
RUN /venv/bin/pip install --upgrade pip
RUN /venv/bin/pip install -r requirements.txt
FROM python:3.7-alpine
COPY --from=builder /venv /venv
WORKDIR /myapp
COPY src .
CMD ["/venv/bin/python3", "app.py"]
到目前为止,效果还不错,比原来小6倍。但是该方案被认为是一些“存根”,具有一些缺点:
COPY --from=builder
步骤pipenv
,但也需要pip
进行安装(+1额外的步骤,pipenv lock
+ pip install
总是比pipenv install
慢)/venv
中,应避免在容器内部安装如何结合这两种方法,以缺乏pipenv
的缺点获得基于阿尔卑斯山的轻型图像,]?>
或者您能否提供生产Dockerfile
的想法?
我可以使用以下简单的Dockerfile为我的python应用程序生成工作映像:FROM python:3.7 WORKDIR / myapp COPY Pipfile * ./ RUN pip install pipenv RUN pipenv install --system --deploy COPY src。 ...
怎么样,