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/

Вернуться на верх