【发布时间】:2019-06-08 01:17:33
【问题描述】:
上下文
我正在尝试使用 docker-compose 在 docker 开发环境中运行我的 Django 应用程序和 Postgres 数据库(这是我第一次使用 Docker)。
我想将我的应用程序与一个名为 teddycrepineau 的自定义角色和数据库一起使用(而不是使用默认的 postgres 用户和数据库)。
目标
我的目标是部署一个 web 应用程序,前端由 react 供电,后端由 django restapi 供电,整个运行在 docker 中。
系统/版本
- 蟒蛇:3.7
- django: 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 上阅读了多个威胁:
- 试图删除我的容器并按照here建议的格式重建它
- 通过thisGitHub问题
- 试图将我的环境变量从
.env文件移动到我的environment我的docker-compose.yml文件中并重建我的容器
文件
docker-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
编辑
我的文件结构如下
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 时无法访问我的网站,但这主要是一个不同的问题)和自定义用户和D b。当我将 docker-compose.yml 文件放到我的根文件夹时,我收到错误 django.db.utils.OperationalError: FATAL: role "teddycrepineau" does not exist
【问题讨论】:
-
输入错误
POSTGES_USER=teddycrepineau=>POSTGRES_USER=teddycrepineau. -
感谢您指出这一点,但我仍然遇到同样的问题。
标签: django postgresql docker docker-compose