我的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:latst.
时,它构建得很好(我认为)。
我用docker run-d-p5000:5000 flask-sample
运行它,它看起来还不错
但是当我转到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中输入所需的包(例如flask)。 构建映像: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。 你已经在一个容器里了,没有理由使用一个环境。