с FastAPI, второй с postgres. Первый запускается сервис с pg, всё ок, запускается на 0.0.0.0:5432, порты проброшены, судя по docker-compose ps. Вторым запускается питоний сервис, стучится на localhost:5432 и... не находит сервис с pg. Оба хоста указаны в .env, две разные записи (host и db_host) и обе равны 0.0.0.0. Так вот, вопрос: как сервису питона увидеть сервис с поднятой базой? Win 10 x64, Python - 3.9-slim-buster, pg - postgres-latest.
А зачем он на локалхост стучится, надо на постгрес
Пофиксил, редиректнул оба сервиса на 0.0.0.0 - то же самое. Вот логи: db: 2021-01-14 08:14:35.121 UTC [1] LOG: starting PostgreSQL 13.1 (Debian 13.1-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit 2021-01-14 08:14:35.122 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432 2021-01-14 08:14:35.122 UTC [1] LOG: listening on IPv6 address "::", port 5432 2021-01-14 08:14:35.131 UTC [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" 2021-01-14 08:14:35.141 UTC [27] LOG: database system was shut down at 2021-01-14 08:14:34 UTC 2021-01-14 08:14:35.149 UTC [1] LOG: database system is ready to accept connections python: pony.orm.dbapiprovider.OperationalError: could not connect to server: Connection refused Is the server running on host "0.0.0.0" and accepting TCP/IP connections on port 5432?
Ну ты либо ставь network=host, либо почитай, как сети в докере работают https://stackoverflow.com/questions/37683508/how-does-service-discovery-work-with-modern-docker-docker-compose
Спасибо за наводку, пойду курить мануалы. Думал, что между всеми сервисами бридж по умолчанию проброшен...
В докер компоузе имя сервиса резолвится в айпишник, по локалхосту не достучиштся
Дефолтная сеть есть
Так-то оно так, но сервис грохается до того, как пытается достучаться по имени сервиса. Поменял - всё то же самое.
Обсуждают сегодня