У меня запущен докер-контейнер postgresql со следующей командой docker run -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust -v /var/lib/postgresql/data:/var/lib/postgresql/data postgis/postgis
Файл pg_hba.conf включает следующие строки:
# warning trust is enabled for all connections
host all all all trust
Запрос на соединение с хост-машины: psql -h localhost -U fake
Ответ в логах БД: FATAL: role "fake" does not exist
Тестовый файл Docker:
FROM postgres:latest
RUN apt-get update && apt-get install -y postgresql-client
CMD ["psql", "-U", "fake", "-h", "localhost", "-p", "5432"]
Тестовый докер-контейнер завершился неудачей со следующей ошибкой:
psql: ошибка: подключение к серверу на «localhost» (::1), порт 5432 не удалось: соединение отклонено Сервер работает на этом хосте и принимает соединения TCP/IP? подключение к серверу по адресу «localhost» (127.0.0.1), порт 5432 не удалось: соединение отклонено Сервер работает на этом хосте и принимает соединения TCP/IP?
Я ничего не вижу в журналах БД.
Почему я не могу сделать запрос из тестового докер-контейнера?
«localhost» в вашем тестовом контейнере относится к этому контейнеру. Но база данных предположительно работает в каком-то другом контейнере.
Чтобы соединить два разных докер-контейнера, мне нужно указать следующий параметр --network = "host"
.
Правильная команда: docker run --network = "host" test
Контейнер PostgreSQL настроен на запуск процесса сервера PostgreSQL. Если вы переопределите
CMD
, сервер PostgreSQL больше не будет запускаться.