Как подключиться к базе данных локальной сети из контейнера docker
Я пытаюсь подключиться к базе данных express на sql-сервере, доступном через 192.168.0.130:1433 в локальной сети из контейнера Docker Django.
Я на Mac и с локального хоста у меня есть ping
$ ping 192.168.0.130 64 байта от 192.168.0.130: icmp_seq=0 ttl=128 time=5.796 ms 64 байта от 192.168.0.130: icmp_seq=1 ttl=128 time=2.234 мс
Но внутри контейнера docker возникает ошибка таймаута.
docker-compose.yml:
version: '3.7'
services:
...
django:
container_name: djangonoguero_django_ctnr
build:
context: .
dockerfile: Dockerfile-django
restart: unless-stopped
env_file: ./project/project/settings/.env
command: python manage.py runserver 0.0.0.0:8000
volumes:
- ./project:/djangonoguero
depends_on:
- postgres
ports:
- 8000:8000
networks:
- djangonoguero-ntwk
networks:
djangonoguero-ntwk:
driver: bridge
Кто-нибудь может помочь мне, пожалуйста? Заранее спасибо.
Например, у вас есть контейнер postgres:
db:
image: postgres
environment:
# This is for example, not use this in production!!!
POSTGRES_USER: developer
POSTGRES_DB: db
POSTGRES_PASSWORD: Passw0rd33
...
Затем, в настройках вашего проекта django, вы должны написать:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'db',
'USER': 'developer',
'PASSWORD': 'Passw0rd33',
'HOST': 'db',
}
}
Будьте внимательны, это пример настроек! Лучше всего хранить эти данные в .env файле!
Сброс значений по умолчанию для ткани из Docker решил проблему.