PostgreSQL После того, как docker-compose не используется, используемый порт не может быть снова использован - PullRequest
0 голосов
/ 10 ноября 2018

Я работаю с проектом, который использует express в качестве сервера и postgres в качестве db для изучения докеров. сервер зависит от того, какая база данных работает. В первый раз, когда я использую docker-compose up, все работает нормально, но когда я перезагружаю его (docker-compose down и docker-compose up) говорит, что что-то не так с портом

version: '3'
services:
  db:
    image: postgres:10
    ports:
      - "5433:5432"
    environment:
      POSTGRES_USER: 'Donald'
      POSTGRES_PASSWORD: 'Aa123456'
      POSTGRES_DB: 'twitter'

  backend:
    build: twitter
    ports: 
      - "3000:3000"
    depends_on: 
      - db
    environment:
      PGHOST: "db"
      PGPORT: '5432'
      PGDATABASE: 'twitter'
      PGUSER: 'Donald'
      PGPASSWORD: 'Aa123456'

Ошибка

{ Error: connect ECONNREFUSED 172.19.0.2:5432
backend_1  |     at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1117:14)
backend_1  |   errno: 'ECONNREFUSED',
backend_1  |   code: 'ECONNREFUSED',
backend_1  |   syscall: 'connect',
backend_1  |   address: '172.19.0.2',
backend_1  |   port: 5432 }

портов до того как docker-compose down

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
b000b9a02257        excer_backend       "node server"            5 minutes ago       Up 3 minutes        0.0.0.0:3000->3000/tcp   excer_backend_1
40ca65adcc46        postgres:10         "docker-entrypoint.s…"   5 minutes ago       Up 3 minutes        0.0.0.0:5433->5432/tcp   excer_db_1

после того, как я использую docker-compose down и вижу порты, все чисто и никаких открытых портов не осталось

Когда я нашел что-то очень интересное, когда я использовал docker-compose up, оно всегда работало, если я использую ctr + c и снова использовал compose up, но при перезапуске docker все так же работает, но как только я использую docker-compose вниз ошибка отображается. Я пробовал сочетания людей с перезапуском моего докера и ctr + c и составлением все работает, но как только я использую docker-compose, это не работает, почему это так?

1 Ответ

0 голосов
/ 10 ноября 2018

Скорее всего, БД не работает пока .

Когда вы делаете docker-compose down, он удаляет контейнер и, поскольку вы не используете том для сохранения, БД имеетснова запустить процесс инициализации, который займет несколько секунд (и, следовательно, работает, когда вы ctrl+c и docker-compose up снова).

Обратите внимание, что depends_on не ждет, пока БД не будет запущена,Для этого вам нужно будет использовать что-то вроде wait-on в вашем внутреннем контейнере.

Другое решение - использовать монтирование тома для контейнера БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...