Добрый день, у меня есть docker-compose.yml, который содержит настройки для PostgreSQL и Dockerfile для создания образа для Django. Когда я запускаю python manage.py migrate, он выдает ошибку:
django.db.utils.OperationalError: could not translate host name "db" to address: Name does not resolve
Я новичок в Django, Docker и PostgreSQL, поэтому я ищу некоторые решения в Интернете, но не повезло.
докер-compose.yml
version: "3"
services:
db:
build: ./postgres
volumes:
- db-data:/var/lib/postgresql/data
ports:
- "5432:5432"
env_file:
- .dev.env
networks:
- backend
redis:
image: "redis:5.0-alpine"
volumes:
- redis-data:/data
ports:
- "6379:6379"
networks:
- backend
networks:
backend:
volumes:
db-data:
redis-data:
Dockerfile
FROM python:3.6-alpine
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN mkdir -p /root/.ssh/
ADD id_rsa /root/.ssh/id_rsa
RUN chmod 700 /root/.ssh/id_rsa
RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing">>/etc/apk/repositories\
&& apk add --no-cache --virtual .build-deps gcc git openssh-client \
&& apk add --no-cache musl-dev \
postgresql-dev \
jpeg-dev \
zlib-dev \
gdal-dev \
proj4 \
openssl-dev \
libmagic \
libffi-dev \
python3-dev \
musl-dev \
&& ssh-keyscan github.com >> ~/.ssh/known_hosts \
&& pip install --no-cache-dir -r requirements.txt
# todo SHOULD NOT DO THE SSH KEYSCAN. SHOULD USE PUBLIC REPO INSTEAD
COPY . .
EXPOSE 8000
VOLUME ["/usr/src/app/storage"]
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
setting.py
DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.postgis',
'NAME': os.environ['POSTGRES_DB'],
'USER': os.environ['POSTGRES_USER'],
'PASSWORD': os.environ['POSTGRES_PASSWORD'],
'HOST': os.environ.get('POSTGRES_HOST', 'db'),
'PORT': os.environ.get('POSTGRES_PORT', '5432'),
}
}
Он должен был перенести базу данных / подключиться к ней.