Context
Я пытаюсь запустить свое приложение Django и базу данных Postgres в среде разработки docker, используя docker-compose (я впервые использую Docker).
Я хочу использовать свое приложение с пользовательской ролью и базой данных с именем teddycrepineau
(в отличие от использования пользователя postgres по умолчанию и базы данных).
Цель
Моя цель состоит в том, чтобы развернуть веб-приложение, работающее на внешнем интерфейсе с помощью response и backend от django restapi, все это работает в докере.
Система / Версия
- питон: 3,7
- Джанго: 2,1
- ОС: Mac OS High Sierra
Какую ошибку я получаю
При запуске docker-compose up
с моей пользовательской ролью и базой данных я получаю следующую ошибку django.db.utils.OperationalError: FATAL: role "teddycrepineau" does not exist
. При запуске той же команды с ролью по умолчанию и db postgres
Django может нормально запускаться.
Насколько я понимаю, запуск docker-compose up создаст роль, а db будет передана как переменная среды
То, что я пробовал до сих пор
Я прочитал несколько угроз на этом сайте, GitHub и Docker:
- попытался удалить мой контейнер и перестроить его с форматированием, как предлагалось здесь
- Прошел через этот выпуск GitHub
- Попытался переместить мою переменную окружения из
.env
файла environment
в мой docker-compose.yml
файл и перестроить мой контейнер
Файлы
докер-compose.yml
version: '3'
volumes:
postgres_data: {}
services:
postgres:
image: postgres
volumes:
- postgres_data:/var/lib/postgresql/data
env_file: .env
ports:
- "5432"
django:
build:
context: teddycrepineau-backend
dockerfile: teddycrepineau-root/Dockerfile
command: ./teddycrepineau-backend/teddycrepineau-root/start.sh
env_file: .env
volumes:
- .:/teddycrepineau-backend
ports:
- "8000:8000"
depends_on:
- postgres
Dockerfile
FROM python:3.7
ENV PYTHONUNBUFFERED 1
WORKDIR /teddycrepineau-backend/
ADD ./teddycrepineau-root/requirements.txt /teddycrepineau-backend/
RUN pip install -r requirements.txt
ADD . /teddycrepineau-backend/
RUN chmod +x ./teddycrepineau-root/start.sh
start.sh
#!/usr/bin/env bash
python3 ./teddycrepineau-backend/teddycrepineau-root/manage.py runserver
.env
POSTGRES_PASSWORD=
POSTGRES_USER=teddycrepineau
POSTGRES_DB=teddycrepineau
EDIT
Моя файловая структура выглядит следующим образом
root
|___ teddycrepineau-backend
|___ teddycrepineau-root
|___ teddycrepineau
|___ Dockerfile
|___ manage.py
|___ start.sh
|___ teddycrepineau-frontend
|___ React-App
|___ .env
|___ docker-compose.yml
Когда я перемещаю свой файл docker-compose.yml в свою внутреннюю папку, он запускается, как и ожидалось (хотя я не могу получить доступ к своему сайту при переходе на 127.0.0.1:8000
, но это в основном другая проблема) с пользовательским пользователем и дб. Когда я помещаю свой docker-compose.yml
файл в свою корневую папку, я получаю ошибку django.db.utils.OperationalError: FATAL: role "teddycrepineau" does not exist