无法使用默认的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脚本。 问题:
- 编写.sql sript是使其工作的唯一方法?
- 我怎么能写它,并把它放在哪里,如果我不想明确地写感知信息,如密码,我想使用.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文件添加到公共库。