Есть группа контейнеров, которая поднимается похожим файлом:
version: "3"
services:
ff_corecomp:
restart: always
build: ./corecomp
depends_on:
- ff_postgres
ff_postgres:
restart: always
image: "postgres"
environment:
- POSTGRES_PASSWORD=pass
В ff_corecomp есть такой процесс создания пула для asyncpg:
await asyncpg.create_pool(
dsn="postgres://postgres:pass@ff_postgres:5432/")
Неожиданно код начал падать на этой строчке. Traceback:
spoilerFile "./utils/db.py", line 13, in init_pool
ff_corecomp_1 | db.pool = await asyncpg.create_pool(
ff_corecomp_1 | File "/usr/local/lib/python3.8/site-packages/asyncpg/pool.py", line 398, in _async__init__
ff_corecomp_1 | await self._initialize()
ff_corecomp_1 | File "/usr/local/lib/python3.8/site-packages/asyncpg/pool.py", line 426, in _initialize
ff_corecomp_1 | await first_ch.connect()
ff_corecomp_1 | File "/usr/local/lib/python3.8/site-packages/asyncpg/pool.py", line 125, in connect
ff_corecomp_1 | self._con = await self._pool._get_new_connection()
ff_corecomp_1 | File "/usr/local/lib/python3.8/site-packages/asyncpg/pool.py", line 468, in _get_new_connection
ff_corecomp_1 | con = await connection.connect(
ff_corecomp_1 | File "/usr/local/lib/python3.8/site-packages/asyncpg/connection.py", line 1668, in connect
ff_corecomp_1 | return await connect_utils._connect(
ff_corecomp_1 | File "/usr/local/lib/python3.8/site-packages/asyncpg/connect_utils.py", line 663, in _connect
ff_corecomp_1 | raise last_error
ff_corecomp_1 | File "/usr/local/lib/python3.8/site-packages/asyncpg/connect_utils.py", line 652, in _connect
ff_corecomp_1 | con = await _connect_addr(
ff_corecomp_1 | File "/usr/local/lib/python3.8/site-packages/asyncpg/connect_utils.py", line 621, in _connect_addr
ff_corecomp_1 | tr, pr = await asyncio.wait_for(
ff_corecomp_1 | File "/usr/local/lib/python3.8/asyncio/tasks.py", line 483, in wait_for
ff_corecomp_1 | return fut.result()
ff_corecomp_1 | File "uvloop/loop.pyx", line 1974, in create_connection
ff_corecomp_1 | File "uvloop/loop.pyx", line 1951, in uvloop.loop.Loop.create_connection
ff_corecomp_1 | OSError: [Errno 113] No route to host
No route to host вызвала у меня ровно две идеи: сеть внутри докера маршрутизирует что то неверно, или контейнер с постргесом не поднялся.
Первая идея отпала быстро: я открыл шелл в контейнере ff_corecomp, и из него спокойно идут пинги до ff_postgres. Вторая идея тоже оказалась неверной: к моменту запуска контейнера ff_corecomp постгрес уже пишет, что готов принимать соединения. Что еще здесь может быть не так?