Docker: сервер работает на локальном хосте ошибка - PullRequest
0 голосов
/ 05 ноября 2018

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

Я искал, пробовал разные вещи, но не нашел чего-то, что помогло бы мне решить проблему.

СООБЩЕНИЕ ОБ ОШИБКЕ: Сервер работает на хосте "localhost" (:: 1) и принимает соединения TCP / IP через порт 5432?

Вот мой файл docker-compose. Ошибка происходит от jobsite.

jobsite:
    container_name: job_startup
    build: .
    # command: ["./docker_compose/django/wait_for_postgres.sh"]
    volumes:
      - .:/code
    environment:
      PRODUCTION: 'False'
    ports:
      - "8000:8000"
    # depends_on:
    #   - "db"
    # links:
    #   - "db"

  enginx:
    build: ./nginx
    container_name: job_nginx
    restart: always
    environment:
      - NGINX_PORT=80
    ports:
      - "80:80"
   depends_on:
      - "jobsite"

Вот основной Dockerfile:

    FROM python:3
ENV PYTHONUNBUFFERED 1
ENV PYTHONDONTWRITEBYTECODE 1

RUN mkdir /code
WORKDIR /code

COPY requirements.txt /code/
RUN pip install -r requirements.txt

COPY . /code/

EXPOSE 8000

CMD python manage.py runserver 0.0.0.0:8000

Скриншот сообщения об ошибке:

Снимок экрана с сообщением об ошибке

UPDATE

db:
    # image: postgres:latest
    build: ./database
    container_name: postgres_database
    # ports:
    #   - "8000:5432"
    restart: always
    environment:
      - DOCKER=True
      - POSTGRES_USER=postgres
      - POSTGRES_DB=jobs_data1
      - POSTGRES_PASSWORD=''
      - POSTGRES_HOST=127.0.0.1
      - DB_USER=john
      - DB_PASSWORD=''
      - DB_DATABASE=jobs_data1
    volumes:
      - ./postgres_database:/docker-entrypoint-initdb.d/
      - postgres_data:/var/lib/postgresql/data/

Ответы [ 2 ]

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

Приложение job_startup пытается подключиться к базе данных postgres, работающей на localhost.

В файле docker-compose отсутствует служба db. Также строка подключения в вашем скрипте Python должна быть db в качестве имени хоста, как описано вашими закомментированными links и depends_on строками.

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

Ваше приложение пытается подключиться к PostgreSQL, работающему на локальном хосте. PostgreSQL, тем не менее, явно не работает на localhost. Вам нужно будет добавить контейнер в вашу конфигурацию составления докера, которая запускает PostgreSQL. Затем настройте приложение Python на использование этого имени вместо localhost.

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