docker python simplehttpserver 不工作

docker python simplehhtpserver not working

我的python代码

# _*_ coding:utf-8 _*_

from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer
import SocketServer

class testHTTPSERVER_RequestHandler(BaseHTTPRequestHandler):

    def do_GET(self):

        self.send_response(200)
        self.send_header('Content-type','text/html')
        self.end_headers()

        self.wfile.write("<html><body><h1>Hello world</h1></body></html>")

def run(server_class=HTTPServer,handler_class=BaseHTTPRequestHandler):
    print('starting server ....')
    server_address = ('127.0.0.1',8081)
    httpd = server_class(server_address,testHTTPSERVER_RequestHandler)
    print('running server')
    httpd.serve_forever()

run()

和docker文件

FROM python:2.7-onbuild
#python:2.7.13-alpine dene
ADD testhttp_server.py /src/app/testhttp_server.py
WORKDIR /src/app/
EXPOSE 8081

CMD ["python","testhttp_server.py"]

docker run and logs

mozilla

所以我的错误在哪里?我在这两天里一直在努力,但我没有发现任何其他东西

改变这个

server_address = ('127.0.0.1',8081)

server_address = ('0.0.0.0',8081)

在 docker 容器内监听 127.0.0.1 意味着您只想监听从容器内部生成的流量,但是当您将主机映射到容器时。它将流量从主机发送到容器的 IP。哪个 id 是动态的,事先不知道。所以需要监听容器内部的所有接口。这就是为什么你应该使用 0.0.0.0