Я бьюсь головой об этом и не могу понять, в чем проблема. Запуск Docker Desktop в Windows 10. У меня есть один API-интерфейс dotnetcore 3.1, который подключается к postgres. Оба они запускаются в контейнерах.

Кажется, все работает, кроме подключения к базе данных. Так как я смотрел на мой docker-compose.yml миллионы раз, я не могу придумать никакой другой идеи.

Вот моя строка подключения:

"Server=postgres;Port=5432;Database=IdentityManager;User Id=postgres;Password=12345678;"

Вот файл docker-compose.yml:

version: '3'

services:
  identityserver:
    depends_on: 
      - "postgres"
    container_name: identityserver
    build:
      context: ./my_project/
      dockerfile: Dockerfile
    environment: 
      - ASPNETCORE_ENVIRONMENT='Development'
    ports: 
      - "5000:80"

  postgres:
    image: "postgres"
    container_name: "postgres"
    restart: always
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=12345678
      - POSTGRES_DB=IdentityManager
    expose: 
      - "5432"

Все накапливается, но соединение с базой данных не удается:

Unhandled exception. Npgsql.NpgsqlException (0x80004005): Exception while connecting identityserver 
---> System.Net.Internals.SocketExceptionFactory+ExtendedSocketException (99): Cannot assign requested address [::1]:5432

Самое странное, что когда я запускаю один только postgres с такой же конфигурацией в docker-compose.yml и запускаю приложение вне контейнера с немного другой строкой подключения:

"Server=127.0.0.1;Port=5432;Database=IdentityManager;User Id=postgres;Password=12345678;"

Я могу подключиться к базе данных.

Я попытался очистить все docker system prune -a, попытался перезапустить Docker, перезагрузить компьютер, но безрезультатно. Кто-нибудь может попытаться помочь?

1
mrGreenBrown 1 Май 2020 в 05:08

2 ответа

Лучший ответ

Наконец, я смог решить свою собственную проблему, и ее вообще не было в файле docker-compose.yml. Где-то в коде приложения строка подключения была изменена, чтобы искать localhost в качестве хоста вместо postgres.

После изменения обратно на postgres все было хорошо.

0
mrGreenBrown 7 Май 2020 в 21:30

Пробовать

links:
  - postgres

Может это поможет

0
Giga Kokaia 1 Май 2020 в 10:42