繁体   English   中英

如何使用 Python3.7 和 Pipenv 为 Flask 应用程序运行 Docker 容器?

[英]How can I run a Docker container with Python3.7 and Pipenv for a Flask app?

我的Dockerfile是:


FROM ubuntu:18.04
RUN apt-get -y update
RUN apt-get install -y software-properties-common
RUN add-apt-repository ppa:deadsnakes/ppa
RUN apt-get update -y
RUN apt-get install -y python3.7 build-essential python3-pip
ENV LC_ALL C.UTF-8
ENV LANG C.UTF-8
RUN pip3 install pipenv
COPY . /app
WORKDIR /app
RUN pipenv install
EXPOSE 5000
CMD ["pipenv", "run", "python3", "application.py"]

当我做docker build -t flask-sample:latest. ,它构建得很好(我认为)。

我用docker run -d -p 5000:5000 flask-sample运行它,它看起来还不错

但是当我 go 到http://localhost:5000时,什么都没有加载。 我究竟做错了什么?

为什么需要虚拟环境? 为什么使用 Ubuntu 作为基础层:

一个更简单的方法是:

Dockerfile:

FROM python:3
  
WORKDIR /usr/src/

COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt

COPY app.py .


ENTRYPOINT FLASK_APP=/usr/src/app.py flask run --host=0.0.0.0

您将所需的包(例如烧瓶)放入您的 requirements.txt 中。 构建映像: docker build -t dejdej/flasky:latest.

启动容器: docker run -it -p 5000:5000 dejdej/flasky

如果强制使用虚拟环境,可以用venv试试:


FROM python:2.7

RUN virtualenv /YOURENV
RUN /YOURENV/bin/pip install flask

CMD ["/YOURENV/bin/python", "application.py"]

简短的回答:您的容器正在运行 pipenv,而不是您的应用程序。 您需要修复最后一行。 CMD ["pipenv", "run", "python3", "application.py"]应该只有CMD ["python3", "application.py"]

正确答案:我完全同意没有任何理由使用 pipenv。 更好的解决方案是替换您的 Dockfile 以使用 python 图像并忘记 pipenv。 您已经在容器中,没有理由使用环境。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM