127.0.0.1 отказался подключаться в докере django - PullRequest
0 голосов
/ 28 мая 2019

Я пытаюсь подключиться к экземпляру django, запущенному в Docker.Насколько я могу судить, я открыл правильный порт и вижу в докере ps, что есть порт tcp на порту 8000, но нет переадресации на порт.

После прочтения докера составьте документы напорты, я ожидал бы, что это будет работать (я также могу просмотреть pgadmin на 127.0.0.1:9000).

Мой docker compose:

version: '3'

services:
  postgresql:
    restart: always
    image: postgres:latest
    environment:
      POSTGRES_USER: pguser
      POSTGRES_PASSWORD: pgpassword
      POSTGRES_DB: pgdb

  pgadmin:
    restart: always
    image: dpage/pgadmin4:latest
    environment:
      PGADMIN_DEFAULT_EMAIL: admin@admin.com
      PGADMIN_DEFAULT_PASSWORD: admin
      GUNICORN_THREADS: 4
      PGADMIN_LISTEN_PORT: 9000
    volumes:
      - ./utility/pgadmin4-servers.json:/pgadmin4/servers.json 
    depends_on:
      - postgresql
    ports:
      - "9000:9000"

  app:
    build: .
    environment:
      POSTGRES_DB: pgdb
      POSTGRES_USER: pguser
      POSTGRES_PASSWORD: pgpassword
      POSTGRES_HOST: postgresql
    volumes:
      - .:/code
    ports:
      - "127.0.0.1:8000:8000"
      - "5555:5555"
    depends_on:
      - postgresql
      - pgadmin

Я пробовал следующие комбинации для (app) ports, как предлагается здесь :

app:
  ...
  ports:
    - "8000"
    - "8000:8000"
    - "127.0.0.1:8000:8000"

но я все еще вижу This site can’t be reached 127.0.0.1 refused to connect. при попытке доступа к сайту.

Я уверенчто это проблема переадресации портов, и что мой сервер правильно работает в django, потому что я могу запустить docker-присоединение к контейнеру и свернуть URL с ожидаемым ответом.

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 04 июня 2019

Чтобы добавить ответ, я запустил свое приложение с помощью команды:

docker-compose run app python3 manage.py runserver 0.0.0.0:8000

При запуске docker-compose аргумент --service-ports должен использоваться для:

Команда запуска с включенными портами службы и сопоставленными с хостом.

Таким образом, моя последняя команда выглядела так:

docker-compose run --service-ports app python3 manage.py runserver 0.0.0.0:8000

Документацию по run можно найти здесь

0 голосов
/ 28 мая 2019

Если вы запускаете Docker внутри виртуальной машины, вам нужно получить доступ к вашему приложению через IP-адрес виртуальной машины и без использования localhost или 127.0.0.1 .Попробуйте получить IP виртуальной машины.Также, пожалуйста, укажите, на какой платформе / среде вы установили и используете докер.

...