Как подключиться к базе данных локальной сети из контейнера 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 решил проблему.

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