无法在docker中连接多个python socket.io

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法在docker中连接多个python socket.io相关的知识,希望对你有一定的参考价值。

我构建了一个简单的python3.6容器的docker-compose,暴露了端口5000.这个容器运行一个python服务器端脚本,等待客户端连接。这是文件:

Dockerfile:

FROM python:3.6-alpine

WORKDIR /app
CMD ["python","serveur.py"]

多克尔 - 撰写:

version: '2'
services:
  serveur:
    build:
      context: .
      dockerfile: Serveur
    ports:
      - "127.0.0.1:5000:5000"
    volumes:
      - "./app:/app"

serve u让.朋友:

#!/usr/bin/python3 
import socket  
import threading

print("debut du programme")
socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = "0.0.0.0"
port = 5000
socket.bind((host, port))
socket.listen(5)

for i in range(2):
        print("ready to connect")
        a,b = socket.accept()
        print("Client connected")

socket.close()

这是问题:

- 如果我运行docker compose,我的客户端无法连接到服务器上;代码似乎阻止了。更多,没有任何打印出现在Docker日志中。如果我把socket.accept()从循环中取出,一个客户端可以连接,我看到日志中的所有打印。如果我从代码中取出循环,我只是对齐多个socket.accept(),那么代码块。

我知道问题出在我的Docker设置上,因为如果我从Docker运行这个脚本,那么serveur.py就能完美运行。

谢谢你们的时间。

答案

事实证明,docker日志被延迟,直到python程序停止。所以我从来没有看过印刷品,因为这个程序,永远不会停止。解决方案是将此env变量放在docker-compose文件中:

version: '2'
services:
  serveur:
    build:
      context: .
      dockerfile: Serveur
    environment:
    - "PYTHONUNBUFFERED=1"
    ports:
      - "127.0.0.1:5000:5000"
    volumes:
      - "./app:/app"

所以现在我可以看到确认连接的打印件..

以上是关于无法在docker中连接多个python socket.io的主要内容,如果未能解决你的问题,请参考以下文章

无法在 unix:///var/run/docker.sock 连接到 Docker 守护进程。(Gitlab)

当组权限似乎正确时,如何修复“拨号 unix /var/run/docker.sock:连接:权限被拒绝”?

Docker:(13)权限被拒绝:AH00072:make_sock:无法绑定到地址 0.0.0.0:80

无法连接到 unix:/var/run/docker.sock 上的 Docker 守护程序。 docker 守护进程是不是正在运行?

Mac Cannot connect to the Docker daemon at unix:///var/run/docker.sock. 问题解决

Mac Cannot connect to the Docker daemon at unix:///var/run/docker.sock. 问题解决