Docker 容器在本地运行 - 没有发送任何数据

RoD*_*oDo 1 python docker

我正在尝试在 docker 容器中运行一个基本的烧瓶应用程序。docker build 工作正常,但是当我尝试在本地进行测试时,我得到了

127.0.0.1 没有发送任何数据错误。

文件

FROM tiangolo/uwsgi-nginx-flask:python3.6-alpine3.7 

ENV LISTEN_PORT=5000
EXPOSE 5000

RUN pip install --upgrade pip

WORKDIR /app
ADD . /app

CMD ["python3","main.py","--host=0.0.0.0"]
Run Code Online (Sandbox Code Playgroud)

主文件

import flask
from flask import Flask, request
import os

app = Flask(__name__)

@app.route('/')

def this_works():
  return "This works..."

if  __name__ == '__main__':
    app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)

运行我正在使用的容器的命令是:

docker run -it --name dockertestapp1 --rm -p 5000:5000 dockertestapp1
Run Code Online (Sandbox Code Playgroud)

还要构建的命令是:

docker build --tag dockertestapp1 .
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗。

aka*_*uko 5

问题是您在传递--host参数时不使用 Flask 二进制文件来启动应用程序。因此,您只需将 Dockerfile 中 CMD 中的参数取出到您的代码中即可。工作设置:

Dockerfile:

FROM tiangolo/uwsgi-nginx-flask:python3.6-alpine3.7 

ENV LISTEN_PORT=5000
EXPOSE 5000

RUN pip install --upgrade pip

WORKDIR /app
ADD . /app

CMD ["python3","main.py"]
Run Code Online (Sandbox Code Playgroud)

main.py

import flask
from flask import Flask, request
import os

app = Flask(__name__)

@app.route('/')

def this_works():
  return "This works..."

if  __name__ == '__main__':
    app.run(host="0.0.0.0", debug=True)
Run Code Online (Sandbox Code Playgroud)

您构建映像和启动容器的方式是正确的。我再次添加步骤以使答案完整:

# build the image
docker build --tag dockertestapp1 .

# run the container
docker run -it --name dockertestapp1 --rm -p 5000:5000 dockertestapp1
Run Code Online (Sandbox Code Playgroud)