Здравствуйте, не так давно начал ознакомление с Докером.
Суть в том, что не могу связать эти 2 контейнера по ip и port'у. Локально все работает прекрасно (как и ожидалось), а вот с докером все не могу разобраться. В каждом из контейнеров все запускается на ip=127.0.0.1 и port=8888, но вот передать данные между ними не выходит.
Что почитать/посмотреть, чтобы разобраться?
docker-swarm.ymlversion: '3'
services:
server:
image: server:v0.0.1
init: true
command: sh -c "python server.py"
networks:
- example_frontend
client:
image: client:v0.0.1
init: true
command: sh -c "python3 client.py"
networks:
- example_frontend
networks:
example_frontend:
driver: overlay
Запускаю через
docker stack deploy -c docker-swarm.yml example-app
часть кода server.py...
async def main(self, local_ip: str, local_port: int) -> None:
server = await asyncio.start_server(
lambda reader, writer: self.handle_request(
reader=reader, writer=writer
),
local_ip,
local_port,
)
addrs = ", ".join(str(sock.getsockname()) for sock in server.sockets)
async with server:
await server.serve_forever()
def start_server(self, local_ip: str, local_port: int) -> None:
asyncio.run(self.main(local_ip=local_ip, local_port=local_port))
...
часть кода client.py...
async def send_to_server(
message: MessageStruct, local_ip: str, local_port: int
) -> None:
_, writer = await asyncio.open_connection(local_ip, local_port)
writer.write(dataclass_to_bytes(message))
await writer.drain()
writer.write_eof()
writer.close()
...
Traceback
2023-08-20 14:55:24 Traceback (most recent call last):
2023-08-20 14:55:24 await send_to_server(
2023-08-20 14:55:24 File "/usr/local/lib/python3.11/site-packages/pybotterfly/server/server_func.py", line 25, in send_to_server
2023-08-20 14:55:24 _, writer = await asyncio.open_connection(local_ip, local_port)
2023-08-20 14:55:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2023-08-20 14:55:24 File "/usr/local/lib/python3.11/asyncio/streams.py", line 48, in open_connection
2023-08-20 14:55:24 transport, _ = await loop.create_connection(
2023-08-20 14:55:24 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2023-08-20 14:55:24 File "/usr/local/lib/python3.11/asyncio/base_events.py", line 1085, in create_connection
2023-08-20 14:55:24 raise exceptions[0]
2023-08-20 14:55:24 File "/usr/local/lib/python3.11/asyncio/base_events.py", line 1069, in create_connection
2023-08-20 14:55:24 sock = await self._connect_sock(
2023-08-20 14:55:24 ^^^^^^^^^^^^^^^^^^^^^^^^^
2023-08-20 14:55:24 File "/usr/local/lib/python3.11/asyncio/base_events.py", line 973, in _connect_sock
2023-08-20 14:55:24 await self.sock_connect(sock, address)
2023-08-20 14:55:24 File "/usr/local/lib/python3.11/asyncio/selector_events.py", line 634, in sock_connect
2023-08-20 14:55:24 return await fut
2023-08-20 14:55:24 ^^^^^^^^^
2023-08-20 14:55:24 File "/usr/local/lib/python3.11/asyncio/selector_events.py", line 674, in _sock_connect_cb
2023-08-20 14:55:24 raise OSError(err, f'Connect call failed {address}')
2023-08-20 14:55:24 ConnectionRefusedError: [Errno 111] Connect call failed ('127.0.0.1', 8888)