【发布时间】:2021-04-29 18:10:16
【问题描述】:
我已经翻阅了文档,但我仍然缺少一些基本部分。
系统:
- mac os 11.2.3
- docker v20.10.5
我在 http_server.py 中使用 Flask 在 python 中有一个愚蠢的 hello world 容器:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'hello world'
Dockerfile:
FROM python:3.8
WORKDIR /
COPY *.py /
RUN pip install Flask
ENV FLASK_APP=http_server.py
CMD flask run -h localhost -p 80
我构建容器:
docker build -t au .
我使用端口转发运行容器:
docker run -p 127.0.0.1:8080:80 httptest
我检查容器:
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c857400d06ce httptest "/bin/sh -c 'flask r…" 4 minutes ago Up 4 minutes 127.0.0.1:8080->80/tcp busy_feistel
我仔细检查了本地机器上实际上有一个打开的套接字:
$ netstat -an | grep 8080
tcp4 0 0 127.0.0.1.8080 *.* LISTEN
我打开容器中的 cli 以三次检查应用程序是否正在运行:
$ docker exec -it c857400d06ce8f2dd88d8466d57c0d274320215e24f2a4610b67d0ee75f8a2ad /bin/sh
# curl 127.0.0.1:80
hello world
好像一切都搞定了!我尝试从本地打容器:
$ curl 127.0.0.1:8080
curl: (52) Empty reply from server
我错过了什么?我觉得有一些非常简单的事情我正在掩饰,但我已经达到了搜索 SO 和 docker 文档的 60 分钟标记,所以我认输了。
提前谢谢你!
【问题讨论】:
标签: python macos docker flask containers