1

官方網站says,如果你想建立postgresql databse只是把變量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腳本。 問題:無法創建數據庫與默認postgresql泊塢窗圖像

  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 

我的搬運工,撰寫文件:

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

回答

2

好像你正在使用不正確的變量名。在您的.env文件中將POSTGRESQL_USERNAME更改爲POSTGRES_USER等等

如果已經使用其他環境構建了數據庫,則可能必須清除包含數據庫的泊塢窗卷。缺省情況是創建一個用戶和一個名爲postgres

不要將.env文件添加到公共庫。