PostgreSQL dans docker container : persistence des données
Bonjour,
J'ai installé PostgreSQL 9.3 dans un container docker (créé avec docker-compose au démarrage de la machine) Et j'ai quelques difficultés :
- Je n'arrive pas à faire en sorte de garder les données (redémarre la machine ou fait 'docker-compose down && docker-compose up -d' les tables et données que j'ai créé disparaissent)
- Je défini des variable d'environnement dans docker-compose.yml pour créer un utilisateur et un DB, mais ça ne marche pas, la seule DB qui est créée est celle contenu dans le Dockerfile
- Si je crée un volume pour les fichiers de conf, PostgreSQL m'affiche l'erreur ci-dessous
Citation:
postgres cannot access the server configuration file "/etc/postgresql/9.3/main/postgresql.conf": No such file or directory
Dockefile :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| FROM ubuntu:16.04
MAINTAINER Test test <test@example.fr>
# Add the PostgreSQL PGP key and repo + install
RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B97B0AFCAA1A47F044F244A07FCC7D46ACCC4CF8
RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main" > /etc/apt/sources.list.d/pgdg.list
RUN apt-get update && apt-get -y -q install python-software-properties software-properties-common postgresql-9.3 postgresql-client-9.3 postgresql-contrib-9.3
# POSTGRE CONFIG
USER postgres
RUN /etc/init.d/postgresql start &&\
psql --command "CREATE USER test WITH SUPERUSER PASSWORD 'test';" &&\
createdb -O test test
# CONFIG
USER root
RUN echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.3/main/pg_hba.conf
RUN echo "listen_addresses='*'" >> /etc/postgresql/9.3/main/postgresql.conf
# Expose the PostgreSQL port
EXPOSE 5432
# Add VOLUMES to allow backup of config, logs and databases
RUN mkdir /home/scripts
VOLUME ["/etc/postgresql", "/var/log/postgresql", "/var/lib/postgresql"]
# Set the default command to run when starting the container
USER postgres
CMD ["/usr/lib/postgresql/9.3/bin/postgres", "-D", "/var/lib/postgresql/9.3/main", "-c", "config_file=/etc/postgresql/9.3/main/postgresql.conf"] |
docker-compose.yml:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| # je suppose que c'est de la version 1 car aucune version n'est précisée dans le fichier
db-postgresql:
restart: always
image: Firlfire/postgresql:9.3
ports:
- 8003:5432
volumes:
- ./db/postgre/data:/var/lib/postgresql/data
#- ./db/postgre/conf:/etc/postgresql
#- ./db/postgre/log:/var/log/postgresql
- ./db/postgre/scripts:/home/scripts
environment:
- DEBUG=false
- POSTGRES_USER=Test
- POSTGRES_PASSWORD=testpass
- POSTGRES_DB=test |