Docker使Flask服务器运行,但是我无法通过浏览器连接到它

时间:2018-07-12 19:22:56

标签: docker flask dockerfile

我正在尝试通过Docker运行Flask应用程序。我上周工作了,但是现在给了我一些问题。我可以启动服务器,但是似乎无法通过浏览器访问任何内容。

这是我的app.py文件(精简版):

... imports ...
app = Flask(__name__)
DATABASE = "users.db"
app.secret_key = os.environ["SECRET_KEY"]
app.config['UPLOAD_FOLDER'] = 'static/Content'

BASE_PATH = os.path.dirname(os.path.abspath(__file__))

# For Dropbox
__TOKEN = os.environ["dbx_access_token"]
__dbx = None 

... functions ...


if __name__ == '__main__':
     app.run(port=5001, threaded=True, host=('0.0.0.0'))

这是我的Dockerfile

# Use an official Python runtime as a parent image
FROM python:3

# Set the working directory to /VOSW-2016-original
WORKDIR /VOSW-2016-original

# Copy the current directory contents into the container at /VOSW-2016-original
ADD . /VOSW-2016-original

# Putting a variables in the environment
ENV SECRET_KEY="XXXXXXXX"
ENV dbx_access_token="XXXXXXXX"

# Install any needed packages specified in requirements.txt
RUN pip install --trusted-host pypi.python.org -r requirements.txt

# Make port 8000 available to the world outside this container
EXPOSE 8000

# Run app.py when the container launches
CMD ["python", "app.py", "--host=0.0.0.0"]

以下是我用来启动服务器的命令:

docker build -t vosw_original ./VOSW-2016-original/

然后:

docker run -i -t -p 5001:8000 vosw_original

然后我收到消息:

* Running on http://0.0.0.0:5001/ (Press CTRL+C to quit)

因此服务器似乎正在运行,但是执行以下任何操作时我似乎都无法访问它:

  1. http://0.0.0.0:5001/
  2. http://0.0.0.0:8000/
  3. http://127.0.0.1:5001/
  4. http://127.0.0.1:8000/

我要去哪里错了?

1 个答案:

答案 0 :(得分:1)

您在错误的端口上运行应用程序:

app.run(port=5001, threaded=True, host=('0.0.0.0'))

同时暴露8000。因此,通过-p 5001:8000,您将容器的8000端口(没有监听的端口)映射到主机的5001端口。当您的应用实际上在容器内的端口上运行时,即消息。