Контейнер Postgres выдает «Не удалось выполнить прямой поиск хоста: неизвестный хост» - PullRequest
0 голосов
/ 01 октября 2019

Я работаю с образом докера, который использует Python3.6 в качестве своей базы. Внезапно он начал падать (выход сразу после запуска). Итак, я проник в контейнер и обнаружил, что он падает, потому что соединение с контейнерной базой данных postgres внезапно завершается неудачно. Единственный вывод ошибки, который мне удалось получить, - это forward host lookup failed: Unknown host, что мне мало что говорит.

entrypoint.sh:

echo "Waiting for postgres..."

while ! nc -z users-db 5432; do
  sleep 0.1
done

echo "PostgreSQL started"

python manage.py run -h 0.0.0.0

вывод ошибки:

Waiting for postgres...
users-db: forward host lookup failed: Unknown host
users-db: forward host lookup failed: Unknown host
users-db: forward host lookup failed: Unknown host
...
...

Dockerfile:

FROM python:3.6.9-slim

LABEL maintainer="abc"

RUN apt-get update && \
    apt-get install -y netcat && \
    apt-get clean

WORKDIR /usr/src/app

COPY ./requirements.txt /usr/src/app/requirements.txt
RUN pip install -r requirements.txt

COPY ./entrypoint.sh /usr/src/app/entrypoint.sh
RUN chmod +x /usr/src/app/entrypoint.sh


COPY . /usr/src/app

CMD ["/usr/src/app/entrypoint.sh"]

Меня поразило то, что до сих пор оно работало замечательно, и без внесения каких-либо изменений в контейнер базы данных соединение не удалось.

Что можно сделать, чтобы устранить неполадкиэто ? Если вам нужно просмотреть какие-либо файлы, просто спросите, и я поделюсь ими здесь.

docker ps:

72d344cc61bf        tdd_nginx           "nginx -g 'daemon of…"   25 minutes ago      Restarting (1) 55 seconds ago                            tdd_nginx_1
8ee2f8082e69        tdd_client          "npm start"              26 minutes ago      Up 25 minutes                   0.0.0.0:3007->3000/tcp   tdd_client_1
1ccfc3ca5600        tdd_users-db        "docker-entrypoint.s…"   26 minutes ago      Up 26 minutes                   0.0.0.0:5435->5432/tcp   tdd_users-db_1
-->  62af29277b78        tdd_users           "/bin/bash -s"           22 minutes ago      Exited (130) 2 minutes ago   # <-- keeps crashing

docker-compose file:

version: '3.7'

services:
  users:
    build:
      context: ./services/users
      dockerfile: Dockerfile
    volumes:
      - './services/users:/usr/src/app'
    ports:
      - 5001:5000
    environment:
      - FLASK_ENV=development
      - APP_SETTINGS=project.config.DevelopmentConfig
      - DATABASE_URL=postgres://postgres:postgres@users-db:5432/users_dev
      - DATABASE_TEST_URL=postgres://postgres:postgres@users-db:5432/users_test
      - SECRET_KEY=bart_simpson
    depends_on:
      - users-db

  client:
    build:
      context: ./services/client
      dockerfile: Dockerfile
    volumes:
      - './services/client:/usr/src/app'
      - '/usr/src/app/node_modules'
    ports:
      - 3007:3000
    environment:
      - NODE_ENV=development
      - REACT_APP_USERS_SERVICE_URL=${REACT_APP_USERS_SERVICE_URL}
    depends_on:
      - users

  nginx:
    build:
      context: ./services/nginx
      dockerfile: Dockerfile
    restart: always
    ports:
      - 80:80
    depends_on:
      - users
      - client

  users-db:
    build:
      context: './services/users/project/db'
      dockerfile: Dockerfile
    ports:
      - 5435:5432
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres

1 Ответ

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

Проблема заключалась в том, что у меня установлена ​​библиотека pyjwt для создания веб-токенов, и я использовал pyjwt.encode() вместо jwt.encode() в своем коде. Это существенно изменило функциональность соединения между контейнерами. Все еще не знаю почему, хотя. Контейнеры теперь работают снова. Если кто-то проголосует, чтобы закрыть эту тему, я пойму, поскольку никто бы не догадался.

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