Django docker -композиция не может видеть MySQL базу данных - PullRequest
0 голосов
/ 26 марта 2020

Я новичок в docker. Я пытаюсь получить docker -композицию для инициализации базы данных MySQL, а затем использовать проект Django для подключения к этой базе данных.

Используемые мной файлы Docker:

FROM python:3.6

RUN mkdir /code
WORKDIR /code

COPY ./ /code/

RUN pip install -r requirements.txt

Затем я использую следующее, чтобы превратить файлы Docker в изображение:

docker build -f ./docker/dockerfile -t mark/markswebsite .

У меня есть следующее в Django:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'dbMarksWebsite',
        'USER': 'root',
        'PASSWORD': 'password',
        'HOST': 'mydb',
        'PORT': '3306',
    }}

Файл docker -compose.yml:

version: '3'

services:
  mydb:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: dbMarksWebsite
  web:
    environment:
      - DJANGO_DEBUG=1
      - DOCKER_DB_HOST=mydb
    image: mark/markswebsite
    stdin_open: true
    tty: true
    command: python manage.py collectstatic --noinput
    command: python manage.py makemigrations
    ports:
      - "8080:8080"
    depends_on:
      - mydb

Я хотел бы добавить следующее, но при нынешнем сбое при выполнении миграций:

python manage.py migrate
python manage.py runserver

И я использую следующее, чтобы инициировать его:

docker-compose -f ./docker/docker-compose.yml up -d

У меня был ряд проблем с этим, но когда я подключаюсь к журналам сайта, в настоящее время Я получаю это сообщение об ошибке:

.......
jango.db.utils.OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)")

Вопрос1 - Не могли бы вы сообщить мне, какие настройки мне нужно внести, чтобы разрешить Django подключаться к базе данных.

Вопрос2 - Есть Есть простой способ получить IP-адрес хоста, чтобы я мог видеть веб-сайт с моего ноутбука?

Спасибо

Отметить

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