我在ubuntu容器中有一个应用程序,该应用程序在localhost(127.0.0.1)接口上的各个端口上运行服务。我正在尝试在运行容器时使用-p
参数将那些端口与主机端口映射。
出于测试目的,我创建了一个示例测试,其中我仅在容器内部的所有接口(0.0.0.0)上运行了flask应用程序服务器。
from flask import Flask
from flask import request
app = Flask(__name__)
@app.route('/')
def index():
print(request.headers)
return "<h1 style='color: red'>HELLO THIS IS MY WEBSITE</h1>"
if __name__ == "__main__":
app.run(host="0.0.0.0", port=3000)
我使用以下命令运行容器:
docker run -it -p 3000:3000 python:test python app.py
一切都按预期进行。
❯ curl localhost:3000
<h1 style='color: red'>HELLO THIS IS MY WEBSITE</h1>
然后,我将主机更改为使用127.0.0.1
(app.run(host="127.0.0.1", port=3000)
),并使用相同的docker命令运行容器。但是现在主机上不提供该服务。
❯ curl localhost:3000
curl: (52) Empty reply from server