Влияет ли NotExist в Django с помощью docker-compose - PullRequest
0 голосов
/ 04 декабря 2018

Я использую docker-compose для управления приложением django и его базой данных.Моя проблема, когда я добавляю объект определенного типа в базу данных, у меня появляется ошибка DoesNotExist: error screenshot.

Что я не понимаю, так это то, что данные находятся вбазы данных, и я могу без проблем запросить ее из докера приложения django.

У меня нет проблемы при запуске приложения в режиме разработки с python manage.py runserver с локальной базой данных.

Вот мой docker-compose.yml:

version: '3'

services:
  dojodb:
    image: mysql:5
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_USER: root
      MYSQL_DATABASE: dojodb
   volumes:
      - dojodbvolume:/var/lib/mysql

  dojo:
    build: .
    environment: 
      - SQLHOST=dojodb
      - SQLPORT=3306
      - SQLUSER=root
      - SQLPWD=password
      - DBNAME=dojodb
    ports:
      - "8000:8000"
    depends_on:
      - dojodb
volumes:
  dojodbvolume:

Я действительно не понимаю, откуда возникла проблема.

РЕДАКТИРОВАТЬ: Проблема неисходить из подключения к базе данных, так как я могу создавать и извлекать другие типы объектов.Ошибка DoesNotExist возникает только тогда, когда я запрашиваю продукты.

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

У вас есть раздел depends_on, но вы пропустили links, поэтому dojodb не известен как хост для dojo (регистрация /etc/hosts в контейнере dojo).

В основном добавить в службу dojo

links:
  - dojodb

Также не забудьте настроить имя хоста базы данных на dojodb.

0 голосов
/ 04 декабря 2018

Потому что в вашем примере (скриншот) вы запрашиваете базу данных как 127.0.0.1.Он работает на localhost, но затем вы создаете docker-compose, ваши сервисы разбиваются на несколько хостов.

Таким образом, чтобы получить доступ к базе данных из dojo, вам нужно запросить хост dojodb вместо localhost

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