Не удалось перевести имя хоста "db" в адрес: Имя или служба неизвестны

Я использую Django + Docker и при сборке образа одного из моих проектов я сталкиваюсь с проблемами при выполнении команды:

docker-compose run web python manage.py makemigrations

ошибка:

root@debian:/home/suportenpd1/Documentos/setorT# docker-compose run web python manage.py makemigrations
[+] Creating 1/0
 ✔ Container setort-db-1  Created                                                                                                                                                                             0.0s 
[+] Running 1/1
 ✔ Container setort-db-1  Started                                                                                                                                                                             1.1s 
/usr/local/lib/python3.12/site-packages/django/core/management/commands/makemigrations.py:160: RuntimeWarning: Got an error checking a consistent migration history performed for database connection 'default': could not translate host name "db" to address: Name or service not known

  warnings.warn(
No changes detected

docker-compose.yml:

services:
  db:
    image: postgres:15.6
    volumes:
      - ./data/db:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=setorT
      - POSTGRES_USER=setorT
      - POSTGRES_PASSWORD=setorT@2024$
    ports:
      - "5432:5432"
  web:
    build: .
    command: ["./wait-for-it.sh", "db:5432", "--", "python", "manage.py", "runserver", "0.0.0.0:8000"]
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    environment:
      - POSTGRES_NAME=setorT
      - POSTGRES_USER=setorT
      - POSTGRES_PASSWORD=setorT@2024$
    depends_on:
      - db

setting.py:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': os.environ.get('POSTGRES_NAME'),
        'USER': os.environ.get('POSTGRES_USER'),
        'PASSWORD': os.environ.get('POSTGRES_PASSWORD'),
        'HOST': 'db',
        'PORT': 5432,
    }
}

Команда, указанная в docker-compose run <service> <command> , отменяет команду, указанную в YAML-определении сервиса. См: https://docs.docker.com/reference/cli/docker/compose/run/.

В вашем случае вы переопределяете:

command: ["./wait-for-it.sh", "db:5432", "--", "python", "manage.py", "runserver", "0.0.0.0:8000"]

с:

python manage.py makemigrations

Подозреваю, что ваш wait-for-it.sh скрипт задерживает ваш web контейнер, пока БД не будет полностью инициализирована и готова к обработке запросов. Добавьте вызов wait-for-it.sh в ваш docker-compose run, и все будет в порядке.

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