我试图在Windows和python 3.7上的docker中运行flask应用程序。
这是我的烧瓶应用程序:
app.py:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
#some lines of code
return render_template('home.html', url=url, host='0.0.0.0')
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')
然后我创建了一个dockerfile.txt作为DockerFile,并将以下内容放入其中:
FROM python:3.7
MAINTAINER <<Your Name>>
RUN apt-get update -y && \
apt-get install -y python3-pip python3-dev
COPY ./requirements.txt /app/requirements.txt
WORKDIR /app
RUN pip3 install -t lib -r requirements.txt
COPY . /app
ENTRYPOINT [ "python3" ]
CMD [ "app.py" ]
然后我在命令提示符下运行以下注释:
docker build -t flask-image:latest .
docker run -d -p 5000:5000 --name name-container1 flask-image
我的问题是,在docker ps -a
之后,我看到容器name-container1
已退出。但是不知道为什么吗?
这是输出:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d925f21f165c flask-image "python3 app.py" About a minute ago Exited (1) About a minute ago name-container1
答案 0 :(得分:0)
很可能未在Docker中设置PYTHONPATH。代替RUN pip3 install -t lib -r requirements.txt
,只需将需求安装为RUN pip3 install -r requirements.txt
答案 1 :(得分:-1)
首先,您没有发布您的requirements.txt文件,所以我认为您没有任何文件。
第二,您可以运行docker日志_container_id_来查看容器标准输出并将其发布到此处。设置中的问题在于暴露端口,出口与您无法连接到未打开的端口有关。
然后,我重新创建了您的方案,如下所示:
Dockerfile
<AdditionalProperties>SkipValidatePackageReferences=true</AdditionalProperties>
app.py
FROM python:3.7
MAINTAINER Roberto Gonçalves "roberto.forsaken@gmail.com"
RUN apt-get update -y && \
apt-get install -y python3-pip python3-dev
COPY . .
RUN pip3 install -r requirements.txt
EXPOSE 5000
ENTRYPOINT [ "python3" ]
CMD [ "app.py" ]
requirements.txt
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return "OK"
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')
执行
Flask==0.10.1