Проблема с подключением к внутренней базе данных: Установка React + Django + MySQL с помощью Docker


Я пытаюсь настроить docker-compose для этого стека. Мне трудно понять весь принцип работы тома, и поэтому я совершил много проб и ошибок.

Я, конечно, хотел бы сделать свою базу данных постоянной.
Я бы также очень хотел, чтобы мой Django контейнер подключался к MySQL DB.
Заранее благодарю вас за ответы.

В настоящее время мой docker-compose.yml выглядит следующим образом:

version: '3.8'

name: scout
services:

  front-end:
    container_name: front-end
    build:
      context: front-end
      dockerfile: Dockerfile
    command: npx serve build

    restart: always
    environment:
      NODE_ENV: production

    expose:
      - 3000
    ports:
      - 3000:3000

  db:
    container_name: db
    image: mysql:latest

    restart: always
    env_file:
      - .env

  back-end:
    container_name: back-end
    build:
      context: back-end
      dockerfile: Dockerfile
    command: python3 manage.py runserver 0.0.0.0:8000

    restart: always
    env_file:
      - .env

    expose:
      - 8000
    ports:
      - 8000:8000

    depends_on:
      - db

Мой файл .env:

MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_ROOT_HOST=%
MYSQL_DATABASE=scout_db
MYSQL_USER=guillaume
MYSQL_PASSWORD=password
MYSQL_ROOT_PASSWORD=password

Мой внутренний Dockerfile:

FROM python:3.10

ENV BACKEND_HOME /home/app/back-end
RUN mkdir -p $BACKEND_HOME
WORKDIR $BACKEND_HOME

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

COPY . ./

EXPOSE 8000

RUN python3 -m pip install --upgrade pip
RUN pip install -r requirements.txt

А в моем settings.py в Django переменная DATABASES выглядит следующим образом:

DATABASES = {
    'default': {
        'ENGINE':   'django.db.backends.mysql',
        'NAME':     'scout_db',
        'USER':     'guillaume',
        'PASSWORD': 'password',
        'HOST':     'db',
        'PORT':     '3306',
    }
}
Вернуться на верх