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'),
}
}
Может ли кто-нибудь сказать, что я сделал не так? Буду признателен за любую помощь. Спасибо.