无法在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. 问题解决