Я создал docker-compose из простого контейнера python3.6, открывающего порт 5000. Этот контейнер запускает скрипт на стороне сервера python, ожидающий подключения клиентов.Вот файлы:
Dockerfile:
FROM python:3.6-alpine
WORKDIR /app
CMD ["python","serveur.py"]
Docker-compose:
version: '2'
services:
serveur:
build:
context: .
dockerfile: Serveur
ports:
- "127.0.0.1:5000:5000"
volumes:
- "./app:/app"
serveur.py:
#!/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 работает отлично.
Спасибо, ребята, за уделенное время.