Site officiel says, que si vous voulez construire une base de données postgresql, mettez simplement des variables POSTGRES_USER, POSTGRES_PASSWORD and POSTGRES_DB
. Je les mets dans le fichier .env et écris en docker-compose
le fichier env_file: ./.env
, mais alors django dit: django.db.utils.OperationalError: FATAL: database "languages" does not exist
. Cela signifie que je devrais écrire un script .sql avec des commandes. Questions:Impossible de créer la base de données avec l'image docker postgresql par défaut
- Une écriture sript sql est la seule façon de le faire fonctionner?
- Comment puis-je l'écrire et où le mettre si je ne veux pas explicitement écrire des informations sensibles comme mot de passe, je veux utiliser le fichier .env comme je vais stocker le script .sql dans le rapport public?
Mon fichier .env
DEBUG=True
SECRET_KEY=...
POSTGRESQL_DATABASE=languages
POSTGRESQL_USERNAME=admin
POSTGRESQL_PASSWORD=pass
POSTGRESQL_ADDRESS=postgres
POSTGRES_DB=languages
Mon fichier 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/
Mon 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"]