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 для главной директории.
[Обновление] Кажется, я решил эту проблему.
Я обновил docker-compose.yml в главной папке, чтобы иметь службу db. Также добавил файл db.env, чтобы бэкэнд-сервис знал, как подключаться к db.