官方网站 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 脚本。 问题:
- 编写 .sql 脚本是使其工作的唯一方法吗?
- 如果我不想明确说明,我该如何编写它以及将其放在哪里 写入密码等敏感信息,我想使用 .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/