Web 服务器未在主机上显示 - Docker

Webserver not showing at host - Docker

我无法访问容器外的应用程序,当我在容器内 exec 并执行 curl localhost:8000 时,它正在显示,但同一应用程序未反映在主机浏览器中。任何帮助,将不胜感激。 main.py

#!/usr/bin/env python

from http.server import BaseHTTPRequestHandler, HTTPServer
from urllib.parse import urlparse
import json

class RequestHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        parsed_path = urlparse(self.path)
        self.send_response(200)
        self.end_headers()
        self.wfile.write(json.dumps({
            'myfavourite author name': 'shakespear',
        }).encode())
        returnx

if __name__ == '__main__':
    server = HTTPServer(('localhost', 8000), RequestHandler)
    print('Starting server at http://localhost:8000')
    server.serve_forever()

Docker 文件

FROM python:latest
COPY . ./
RUN pip install -r requirements.txt
EXPOSE 8000
CMD python main.py

requirements.txt

urllib3
httpserver

您的程序需要绑定到 0.0.0.0 才能接受来自容器外部的连接。像这样

if __name__ == '__main__':
    server = HTTPServer(('0.0.0.0', 8000), RequestHandler)
    print('Starting server at http://0.0.0.0:8000')
    server.serve_forever()