Я пытаюсь соединить проект Django с MySQL, используя docker.
У меня проблема при поднятии docker-compose. Там написано следующее сообщение об ошибке:
super (Connection, self). init (* args, ** kwargs2) django.db.utils.OperationalError: (2002, "Canне подключаться к серверу MySQL по 'db' (115) ")
Я использую порт 3307, должен ли я создать первую новую схему базы данных в моей локальной сети? Или как я могу это сделать, потому что мой порт по умолчанию - 3306, но если я пытаюсь его использовать, он говорит, что занят.
Мой код здесь:
Dockerfile
FROM python:3.7
ENV PYTHONUNBUFFERED 1
ENV LANG=C.UTF-8
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN apt-get update
RUN pip install -r requirements.txt
ADD . /code/
Docker-compose
version: '2'
services:
app:
container_name: container_app
build:
context: .
dockerfile: Dockerfile
restart: always
command: bash -c "python3 manage.py migrate && python manage.py shell < backend/scripts/setup.py && python3 manage.py runserver 0.0.0.0:8000"
links:
- db
depends_on:
- db
ports:
- "8000:8000"
db:
container_name: container_database
image: mariadb
restart: always
environment:
MYSQL_ROOT_HOST: 'host.docker.internal'
MYSQL_DATABASE: 'container_develop'
MYSQL_USER: 'root'
MYSQL_PASSWORD: 'password'
MYSQL_ROOT_PASSWORD: 'password'
ports:
- "3307:3307"
settings.py:
DATABASES = {
'default' : {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'database_develop',
'USER': 'root',
'PASSWORD': 'password',
'HOST': 'db',
'PORT': 3307,
'CHARSET': 'utf8',
'COLLATION': 'utf8_bin',
'OPTIONS': {
'use_unicode' : True,
'init_command': 'SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED',
},
}
}
Дело в том, что у меня нигде нет базы данных, поэтому я использую ее локально, нужно лизагрузить базу данных на сервер и затем использовать порт, который мне предоставляет сервер? Есть ли способ использовать его локально из докера? Или установить его в докер? Так что я могу поделиться этим докером с другом, и он может использовать ту же базу данных?