Django docker не смог получить доступ к MYSQL на хост-сервере (с помощью docker-compose)

У меня есть рабочее приложение django, запущенное через docker, которое будет использоваться для производства. В настоящее время оно также использует базу данных mysql, которая также размещена с помощью docker. На самом деле все работает нормально.

Однако, как я узнал, размещение базы данных mysql на docker может быть не самым предпочтительным способом сделать это на производстве. Вот почему я хотел использовать мой хост-сервер, на котором запущен mysql. Моя проблема в том, что я не могу заставить мое приложение django подключиться к mysql-серверу хост-сервера. Вот мой файл docker-compose.

version: '3.9'

networks:
  default:
    external: true
    name: globalprint-shared-network

services:
   
  #db:
  #  image: mysql:5.7
  #  ports:
  #    - "3307:3306"
  #  hostname: globalprint-db
  #  restart: always
  #  volumes:
  #    - production_db_volume:/var/lib/mysql
  #  env_file:
  #    - .env.prod

  app:
    build:
      context: .
    ports:
      - "8001:8000"
    volumes:
      - production_static_data:/vol/web
    hostname: globalprint-backend
    restart: always
    env_file:
      - .env.prod
  #  depends_on:
  #    - db


  proxy:
    build:
      context: ./proxy
    hostname: globalprint-backend-api
    volumes:
      - production_static_data:/vol/static
    restart: always
    ports:
      - "81:80"
    depends_on:
      - app


volumes:
  production_static_data:
  production_db_volume:

Я действительно пробовал добавить это в app service и сделал, но все равно это не сработало:

  extra_hosts:
    host.docker.internal:host-gateway

Мои настройки django для базы данных тоже такие. Она фактически ссылается на переменную окружения, но значение для хоста host.docker.internal и порта 3306:

DATABASES = {
    'default': {
        'ENGINE': env('DATABASE_ENGINE_MYSQL'),
        'NAME': env('MYSQL_DATABASE'),
        'USER': env('MYSQL_USER'),
        'PASSWORD': env('MYSQL_PASSWORD'),
        'HOST': env('DATABASE_HOST'), # localhost Or an IP Address that your DB is hosted on
        'PORT': env('DATABASE_PORT'),
    }
}

Может ли кто-нибудь сказать, что я сделал не так? Буду признателен за любую помощь. Спасибо.

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