Docker-compose не стартует django
при выполнении команды docker-compose up -build возникает ошибка:
Is the server running on host "127.0.0.1" and accepting reglaments_1 | TCP/IP connections on port 5432?
При этом образ собирается и контейнеры запускаются. Но при открытии в браузере по адресу 127.0.0.1:8000 страница не найдена...
Dockerfile:
FROM python:3.9
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
WORKDIR /code
COPY req.txt /code/
RUN pip install -r req.txt
COPY . /code/
docker-compose:
version: "3.9"
services:
db:
image: postgres
restart: always
volumes:
- ./data/db:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: Cib3jj7yz123
reglaments:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
в settings.py:
ALLOWED_HOSTS = ['*']
DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': BASE_DIR / 'db.sqlite3',
# },
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': "ano_rsi_db",
'USER': "postgres",
'PASSWORD': "Cib3jj7yz123",
'HOST': "127.0.0.1",
'PORT': "5432",
}
}
в settings.py вы указали 'HOST': "127.0.0.1", что будет отправлять запрос внутри этого же контейнера и в нем не поднят порт 5432. Варианты
- пробросить порт 5432 в контейнере db на хост и настроить на IP host переменную 'HOST': "127.0.0.1"
- обратиться из контейнера reglaments напрямую в контейнер db по имени (примерно так 'HOST': "db" или задать отдельное имя в services:db:container_name: db-pg и обратиться к нему так: 'HOST': "db-pg")