Django/Docker multiple containers error - could not translate host name "db" to address: Временный сбой при разрешении имен

Я работаю над созданием каталога и подкаталогов: основной каталог проекта, который содержит код/контейнеры бэкенда и фронтенда. Я работаю над соединением главной директории и бэкенда в первую очередь.

Вот мой бэкэнд docker-compose.yml:

`services:
  db:
    image: postgres
    volumes:
      # - ./docker/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
      - ./data:/var/lib/postgresql/data/
    # volumes:
    #   - ./data:/app/backend/data
    environment:
      POSTGRES_DB=postgres
      POSTGRES_USER=postgres
      POSTGRES_PASSWORD=postgres

  backend:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/app/backend
    env_file:
      - docker/environment/db.env
    ports:
      - "8000:8000"
    restart: on-failure
    depends_on:
      - db
    links:
      - db:db

Вот мой внутренний Dockerfile:

>! `FROM python:3
>! ENV PYTHONDONTWRITEBYTECODE=1
>! ENV PYTHONUNBUFFERED=1
>! WORKDIR /app/backend/
>! COPY requirements.txt /app/backend/
>! RUN pip install -r requirements.txt
>! COPY . /app/backend/
>! EXPOSE 8000
>! CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]`
>! 
>! 
>! Also, here's the database settings in settings.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,
>!     }
>! }`

Мой контейнер backend работает нормально, если я захожу в backend и делаю docker compose up.

Я пытаюсь создать docker-compose.yml из главной папки, чтобы я мог выполнить docker compose up из главной директории, и он бы запустил контейнер backend (и позже, в будущем, контейнер frontend).

Вот мой docker-compose.yml для main:

`services:
  backend:
    build: ./backend 
    ports:
      - "8000:8000" 
    # networks:
    #   - "backend"   
    # networks:
    #   - backend
    # command: python manage.py runserver 0.0.0.0:8000  
    # volumes:
    #   - ./backend:/app/backend
    
    # restart: always
    # depends_on:
    #   - db
    networks:
      default:
        ipv4_address: <ip address>

networks:
  default:
    driver: bridge
    ipam:
      config:
        - subnet: <ip address>/16`

Теперь, если я выполняю docker compose up из основной папки, я получаю следующую ошибку:

введите описание изображения здесь

Что я упускаю?

Попробовал создать сеть в docker-compose.yml для главной директории.

[Update] I think I solved it.

I updated my docker-compose.yml in main folder to have a db service. Also added a db.env file so the backend service knows how to connect to db.

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