官方网站says,如果您想构建postgresql数据库,只需输入varibles 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脚本。的的问题:
我的.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"]
答案 0 :(得分:2)
好像你使用了不正确的变量名。将POSTGRESQL_USERNAME
更改为POSTGRES_USER
,依此类推.env文件
如果已使用其他环境构建数据库,则可能必须清除包含数据库的docker卷。默认设置是创建用户和名为postgres
不要将.env文件添加到公共存储库。