実現したいこと
- コンテナを2個立てており、havedataとwebというコンテナです。
- 二つはdocker-composeで立てられており、二つの間でソケット通信したいと考えいています。
前提
docker-composeで2つのコンテナを立ち上げ、ローカルのpythonファイルをマウントしてます。
その後、ターミナルで、2つのコンテナにログインし、レシーブ.pyとセンド.pyを実行させています。
以下、ディレクトリ構成図です。
. ├── docker-compose.yml ├── havedata │ ├── Dockerfile │ └── src │ └── send.py └── web ├── Dockerfile └── src └── rec.py
発生している問題・エラーメッセージ
# python3 send.py Traceback (most recent call last): File "/home/usr/send.py", line 7, in <module> s.connect(('0.0.0.0', PORT)) ConnectionRefusedError: [Errno 111] Connection refused
該当のソースコード
python
1#こちらがrec.py 2import socket 3 4PORT = 50000 5BUFFER_SIZE = 1024 6 7with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: 8 s.bind(('0.0.0.0', PORT)) 9 s.listen() 10 while True: 11 (connection, client) = s.accept() 12 try: 13 print('Client connected', client) 14 data = connection.recv(BUFFER_SIZE) 15 connection.send(data.upper()) 16 finally: 17 connection.close()
python
1#こちらがsend.py 2import socket 3 4PORT = 11113 5BUFFER_SIZE = 1024 6 7with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: 8 s.connect(('0.0.0.0', PORT)) 9 # data = input('Please input > ') 10 data = "sony" 11 s.send(data.encode()) 12 print(s.recv(BUFFER_SIZE).decode())
docker
1 2version: '3.8' 3 4services: 5 web: 6 build: ./web 7 volumes: 8 - "./web/src:/home/usr" 9 tty: true 10 11 havedate: 12 build: ./web 13 volumes: 14 - "./havedata/src:/home/usr" 15 tty: true
試したこと
たまたま同じように実装されたい方が以下のURLにいらっしゃいましたが、
https://teratail.com/questions/250296
私はうまくいきませんでした。
ポートなどを変えたりしてみましたが、うまくいきませんでした。
そもそも、こちらのやり方はできないのでは?と思ってしまっています。
よろしければ、こちらは技術的にできるのか、なにが足りていないのかを教えてください。
よろしくお願いいたします。
※Dockefileはただpython3をインストールしてるだけなので割愛させていただきます。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/02/14 12:12 編集
2023/02/14 12:24
2023/02/14 13:02
2023/02/14 13:10
2023/02/14 13:56 編集
2023/02/14 14:18