Почему докер отказывается подключаться к 127.0.0.1:5432? - PullRequest
0 голосов
/ 09 октября 2019

мой URL базы данных настроен на

DATABASE_URL = postgres: // DBUser: DBPass @ locahost: 5432 / имя_базы_данных

мой файл Docker имеет следующий вид

version: "3"
services:
  redis:
    image: redis:alpine
    container_name: redis
    ports:
      - "6379:6379"

  db_command:
    image: postgres:alpine
    container_name: pgDB
    environment:
      POSTGRES_USER: DBUser
      POSTGRES_PASSWORD: DBPass
      POSTGRES_DB: DatabaseName
    volumes:
      - "./.docker_pgdata:/var/lib/postgresql/data"  
    ports:  
      - "5432:5432"

когда я пытаюсь запустить команду sequelize db:migrate выдает ошибку

Я могу подключиться к экземпляру Docker Postgres через командную строку, не проблема.

ERROR: connect ECONNREFUSED 127.0.0.1:5432 Я не понимаю, изменение хоста с127.0.0.1 для localhost не действует. Кроме того, это было запущено ранее, и теперь это не работает, что очень озадачивает меня.

Я пошел проверить решение, но ни один не работает для меня.

Ответы [ 2 ]

0 голосов
/ 10 октября 2019

при попытке запустить команду sequelize db: migrate выдает ошибку

Откуда вы пытаетесь запустить команду? контейнер redis? ваш локальный?

Если он из контейнера redis, вы можете использовать имя службы: db_command

Url: DATABASE_URL = postgres: // DBUser: DBPass @ db_command: 5432 /DatabaseName

0 голосов
/ 09 октября 2019

Если вы хотите получить доступ к контейнеру B из контейнера A, вы не можете использовать localhost, потому что контейнер B не работает внутри контейнера A. Он находится в сети контейнеров.

Попробуйте указатьзависимость контейнера с помощью depends_on:

services:
  redis:
    ...<existing config>
    depends_on:
      - pgDB

Затем контейнер redis может получить доступ к контейнеру базы данных. Для подключения используйте адрес контейнера B 0.0.0.0:5432.

Еще лучше, просто используйте имя контейнера, к которому вы пытаетесь получить доступ (pgDB)

Примечание: рекомендуетсяне изменять имена контейнеров. Просто позвольте им использовать свои сервисные имена, если это возможно.

...