Когда я пытаюсь выполнить следующую команду:
sudo docker-compose up
В моем терминале появляется следующая ошибка:
Вот как выглядит мой файл докеров:
FROM python:3.6
ENV PYTHONUNBUFFERED 1
RUN mkdir /agent-technologies
WORKDIR /agent-technologies
COPY . /agent-technologies
RUN pip install -r requirements.txt
EXPOSE 8000
Вот как выглядит мой docker-compose.yml
:
version: '3'
services:
db:
image: postgres
environment:
- POSTGRES_USER=stefan_radonjic
- POSTGRES_PASSWORD=cepajecar995
- POSTGRES_DB=agent_technologies_db
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/agent-technologies
ports:
- "8000:8000"
links:
- db
depends_on:
- db
И, наконец, настройки ранее созданной БД PostgresSQL:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'agent_technologies_db',
'USER': 'stefan_radonjic',
'PASSWORD': 'cepajecar995',
'HOST': 'db',
'PORT': '',
}
}
спасибо, это действительно устранило мою проблему, но теперь у меня новая проблема. Я обновил вопрос.
Ваше приложение django пытается подключиться к базе данных localhost, но поскольку оно находится внутри своего собственного контейнера, localhost не подходит для доступа к базе данных.
Dockercompose разрешит ваши запросы имен в базу данных, если вы будете ссылаться на это по имени контейнера db. В вашем случае это "db"
Как видно из текста на картинке - вы должны добавить «0.0.0.0» в вашу переменную ALLOWED_HOSTS
внутри вашего модуля настроек.
Убедитесь, что вы внимательно прочитали документацию по django. Это довольно энергично.
Спасибо, ребята, моя проблема решена!
Ошибка очевидна .. Вы не указали свой ip в Параметр ALLOWED_HOSTS. Попробуйте добавить их в свой файл настроек:
ALLOWED_HOSTS = ['*'] # wildcard, allows all
Или, если вы хотите быть откровенным:
ALLOWED_HOSTS = ['0.0.0.0'] # explicit
Хост вашей базы данных в DATABASES dict должен быть "db"