无法使用默认的postgresql docker镜像创build数据库

官方网站说 ,如果你想build立postgresql databse只是把variablesPOSTGRES_USER, POSTGRES_PASSWORD and POSTGRES_DB 。 我把它们放到.env文件中,然后写入docker docker-compose文件env_file: ./.env ,但是然后django说: django.db.utils.OperationalError: FATAL: database "languages" does not exist 。 这意味着我应该用命令编写.sql脚本。 问题:

  1. 编写.sql sript是使其工作的唯一方法?
  2. 我怎么能写它,并把它放在哪里,如果我不想明确地写感知信息,如密码,我想使用.env文件,因为我将存储公共回购的.sql脚本?

我的.env文件

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

我的docker – 撰写文件:

 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"] 

看起来像你正在使用不正确的variables名称。 在您的.env文件中将POSTGRES_USER更改为POSTGRES_USER等等

如果已经使用其他环境构build了数据库,则可能必须清除包含数据库的泊坞窗卷。 默认是创build一个名为postgres的用户和数据库

不要将.env文件添加到公共库。