为什么Docker容器无法运行

时间:2018-12-17 12:04:31

标签: python docker flask

我试图在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

2 个答案:

答案 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