django - 无法使用默认的 postgresql docker 镜像创建数据库

标签 django postgresql docker environment-variables docker-compose

官方网站 says ,如果你想构建 postgresql 数据库,只需输入变量 POSTGRES_USER, POSTGRES_PASSWORD and POSTGRES_DB 。我将它们放入 .env 文件中并写入 docker-compose文件env_file: ./.env ,但是 django 说:django.db.utils.OperationalError: FATAL: database "languages" does not exist 。这意味着我应该用命令编写 .sql 脚本。 问题:

  1. 编写 .sql 脚本是使其工作的唯一方法吗?
  2. 如果我不想明确说明,我该如何编写它以及将其放在哪里 写入密码等敏感信息,我想使用 .env 文件,因为我将在公共(public)存储库中存储 .sql 脚本?

我的.env 文件

DEBUG=True
SECRET_KEY=...
POSTGRESQL_DATABASE=languages
POSTGRESQL_USERNAME=admin
POSTGRESQL_PASSWORD=pass
POSTGRESQL_ADDRESS=postgres
POSTGRES_DB=languages

我的 docker-compose 文件:

version: '3'

services:
  web:
    build: ./web 
    env_file: ./web/microservice/.env
    volumes:
      - ./web:/code/
    depends_on:
      - postgres
    command: python manage.py runserver 0.0.0.0:8000

  nginx:
    build: ./nginx/
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./web/static:/code/static
    depends_on:
      - web

  postgres:
    image: postgres:latest
    ports:
      - "5432:5432"
    env_file: ./web/microservice/.env
    volumes:
      - /var/lib/postgresql/data/

我的Dockefile :

FROM python:3.5
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD ./requirements.txt /code/
RUN pip install --no-cache-dir -r requirements.txt
ADD . /code/
EXPOSE 8000
CMD ["/usr/local/bin/gunicorn", "translation_microservice.wsgi", "-w", "2", "-b", ":8000", "--access-logfile", "-", "--capture-output"]

最佳答案

您似乎使用了不正确的变量名称。在 .env 文件中将 POSTGRESQL_USERNAME 更改为 POSTGRES_USER

如果已经使用其他环境构建了包含数据库的 docker 卷,则可能需要清除该卷。默认是创建一个名为 postgres

的用户和数据库

不要将 .env 文件添加到公共(public)存储库。

关于django - 无法使用默认的 postgresql docker 镜像创建数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45906064/

相关文章:

python - psycopg2.IntegrityError : duplicate key value violates unique constraint DETAIL: Key (id)=(19) already exists

postgresql - 如何在 DigitalOcean 上将数据库从 heroku 导入到 Dokku?

docker - 在32位机器上安装和使用docker

docker 原生网络与 weave net/flux/show

django - 无法通过django shell删除heroku表

python - usera._meta.get_all_field_names() 中的变量比模型中的变量更多

python - 解析 django table2 中的 ISO 8601 日期格式

java - 如何使用Spring Boot将数据分离到两个表中?

postgresql - 目标表未正确更新

apache - K8s Nginx 代理未到达 Pod