Сервер Django в Docker - PullRequest
       6

Сервер Django в Docker

0 голосов
/ 04 мая 2018

Я начинаю разрабатывать приложение с бэкэндом Django, и я хочу сделать это внутри Docker. Мне почти удалось сделать это, но у меня все еще есть проблема. В настоящее время у меня работает два контейнера:

docker ps

Первый содержит мое приложение django, а полная команда:

python3 manage.py runserver 0.0.0.0:8000

а второй размещает мою базу данных.

Вот мой файл docker-compose.yml:

version: '3'
services:
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD : root
      MYSQL_DATABASE : ml_gui
  back:
    build: ./back/
    command: python3 manage.py runserver
    ports:
      - "8000:8000"
    depends_on:
      - db

и мои настройки django, касающиеся базы данных:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'ml_gui',
        'USER': 'root',
        'PASSWORD': 'root',
        'HOST': 'db',
        'PORT': '3306',
        'OPTIONS': {
            'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
        },
        'TEST': {
            'CHARSET': 'utf8',
            'COLLATION': 'utf8_general_ci',
        },
    },
}

Проблема в том, что когда я делаю запросы вне контейнера (я пробовал в своем браузере, с curl и с Postman) на localhost: 8000, у меня нет ответа. Но когда я делаю тот же запрос внутри контейнера с curl, он работает.

Как я могу заставить эти запросы работать вне контейнеров?

1 Ответ

0 голосов
/ 05 мая 2018

вы никогда не должны запускать ./manage.py runserver на производстве, это только для тестирования ... также, если вы не укажете IP-адрес, который прослушивает сервер, он доступен только для localhost (см. здесь )

поэтому в вашем docker-compose.yml команда должна быть

./manage.py runserver 0:8000
...