Проблема с подключением к внутренней базе данных: Установка 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',
}
}