Docker не может соединить мой контейнер mysql с контейнером djngo
У меня есть два отдельных контейнера. Когда я пытаюсь соединить MySQL с моим контейнером Django, я получаю эту ошибку:
django_farhyn | super().__init__(*args, **kwargs2)
django_farhyn | django.db.utils.OperationalError: (2005,
"Unknown server host 'mysql' (-2)")
Этот файл docker compose для mysql , phpmyadmin и использование для других сервисов:
version: '3'
services:
mysql:
image: mysql:8
container_name: mysql
environment:
MYSQL_ROOT_PASSWORD: test
MYSQL_USER: test
MYSQL_PASSWORD: test
MYSQL_DATABASE: testdb
ports:
- "3306:3306"
restart: always
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: phpmyadmin
environment:
PMA_HOST: mysql
MYSQL_ROOT_PASSWORD: test
ports:
- "8080:80"
depends_on:
- mysql
restart: always
Этот файл docker compose только для проекта django
version: '3'
services:
django_farhyn:
build: .
container_name: django_farhyn
command: python manage.py runserver 0.0.0.0:8000
ports:
- "8000:8000" # Django application port mapping
здесь мои настройки db:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': config('MYSQL_DATABASE', default=''),
'USER': config('MYSQL_USER', default=''),
'PASSWORD': config('MYSQL_PASSWORD', default=''),
'HOST': 'mysql',
'PORT': '3306',
}
}
Я не знаю, где я делаю ошибку и борюсь уже несколько часов за соединение контейнера mysql с моим контейнером django docker.
По-моему, у вас есть 2 файла docker-compose, и вам нужна связь между двумя сетями docker-compose. По умолчанию docker-compose не позволяет подключаться другим приложениям docker(-compose) за пределами своей собственной сети.
Вам нужно настроить сеть, разрешающую внешние подключения, в главном файле docker-compose следующим образом:
main docker-compose.yml
networks:
default:
name: mysql
Django docker-compose.yml
networks:
default:
name: mysql
external: true
Что-то вроде этого должно работать, также проверьте документацию для получения дополнительной информации: https://docs.docker.com/compose/networking/