首页 > 解决方案 > Python 2.7 TCP 服务器与 Docker 中部署的动态 IP

问题描述

我有一个监听客户端请求的 TCP 服务器。在本地环境中运行和执行请求时,它可以正常工作。

服务器使用 Docker 部署在 Azure 容器实例中。我一直在进行故障排除,并且socket.accept()在 Docker 映像(本地和 Azure)中运行时返回 None 对象。

def __init__(self, ip_address, port):
    self.ipAddress = ip_address
    self.port = port
    self.server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    self.server_socket.bind((self.ipAddress, self.port))
    self.server_socket.listen(1)
    self.secure_socket = None
    self.worker = None

def connect(self):
    print("client connection before accept" )
    (client_connection, client_address) = self.server_socket.accept()

在服务器本地运行 IP 为 0.0.0.0 的服务器,允许客户端连接到服务器 0.0.0.0:port。但是,当我在案卷中运行此方法时,该accept()方法没有返回套接字,我认为问题与 IP 地址有关。

如果客户端托管在 localhost 中,但 docker 在本地 Docker 上运行,我看到客户端“命中”服务器引发异常,但从未创建有效套接字。

我面临的最大问题是在 Azure 容器实例中部署它,因为这个服务会给我一个动态 IP,我不想为这个项目创建一个静态 IP。

标签: python-2.7dockerazure-container-instances

解决方案


推荐阅读