Docker-compose не может подключиться к контейнеру Docker postgres

#postgresql #spring-boot #docker #docker-compose

#postgresql #весенняя загрузка #docker #docker-compose

Вопрос:

Моя база данных Postgres работает в контейнере Docker. При запуске контейнера сообщается, что он готов к прослушиванию на 5432. Мой контейнер приложения настроен на зависимость от него.

     container_name: my_postgres_db
    image: library/postgres:latest
    network_mode: bridge
    expose:
      - 5432
    ports:
      - 5432:5432
    environment:
      - POSTGRES_USER=admin
      - POSTGRES_PASSWORD=admin
      - POSTGRES_DB=localdb
    restart: always
  

Конфигурация для приложения:

     container_name: my_test_app
    depends_on:
      - db
    build:
      context: ./
      dockerfile: Dockerfile
    image: my_test_app
    ports:
      - 8080:8080
  

Основываясь на решениях подобных вопросов, я изменил localhost URL-адрес в БД на:
spring.datasource.url=jdbc:postgresql://db:5432/localdb

Это вызывает другую ошибку = «Исключение неизвестного хоста». Даже если мне удастся создать приложение таким образом, оно все равно не работает. Журналы говорят, Connection to localhost:5432 refused что еще мне не хватает? Почему он все еще слушает localhost:5432 , когда я, очевидно, изменил его на db:5432 и gradlew очищает / создает его?

Комментарии:

1. я предполагаю, что у вас есть проблемы с сетью, которую вы можете прочитать подробнее docs.docker.com/compose/networking и исправьте это, добавив сети вместо того, чтобы раскрывать порт

Ответ №1:

просто измените network_mode в postgres и app на host

 network_mode: host
  

обратите внимание, что при этом будет игнорироваться параметр expose и будет использоваться сеть хоста и сеть контейнеров

Комментарии:

1. Большое вам спасибо! Это сделало свое дело. Я установил как ‘app’, так и ‘db’ network_mode в docker-compose.yml для размещения. Я отмечаю ваш ответ как решение.