Django не может разрешить имя службы db

У меня есть докеризованное приложение django и сервер postgresql. Я использую docker compose для объединения обоих. Проблема в том, что я постоянно получаю эту ошибку:

web_1  | django.db.utils.OperationalError: could not translate host name "db" to address: Name or service not known

Это мой файл docker-compose.yml:

version: '3'
services:
    web:
        image: "badger-dev"
        ports:
            - "8000:8000"
        volumes:
            - .:/app
        links:
            - db:db
        depends_on:
            - db
    db:
        image: "badger-postgres"
        container_name: db
        ports:
            - "5432:5432"

Я также попробовал следующую конфигурацию с тем же результатом:

version: '2'
services:
    web:
        image: "badger-dev"
        ports:
            - "8000:8000"
        volumes:
            - .:/app
        links:
            - db:db
        networks:
            - djangonetwork
    db:
        image: "badger-postgres"
        container_name: db
        ports:
            - "5432:5432"
        networks:
            - djangonetwork
networks:
  djangonetwork:
      driver: bridge

Вот мои настройки:

DATABASES = {
     'default': {
          'ENGINE': 'django.contrib.gis.db.backends.postgis', 
          'NAME': 'dbhvu01u3e3fug',  
          'USER': 'postgres',                           
          'PASSWORD': 'postgres',                       
          'HOST': 'db',                           
          'PORT': '5432', # Use PgPool
     }
}

Есть идеи, почему это не работает? Я также пробовал добавить depends_on, но тоже с тем же результатом. Я использую pycharm, если это может помочь.

Попробуйте это:

version: '2'
services:
    db:
        image: "badger-postgres"
        container_name: db
        ports:
            - "5432:5432"
        networks:
            - djangonetwork
    web:
        image: "badger-dev"
        ports:
            - "8000:8000"
        volumes:
            - .:/app
        depends_on:
            - db
        links:
            - db:db
        networks:
            - djangonetwork
networks:
  djangonetwork:
      driver: bridge

В итоге мой контейнер db завершал работу после выполнения команды postgres start. Добавление в Dockerfile чего-то вроде CMD service postgresql start && tail -f /dev/null решило проблему.

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