Bonjour,

Ma question concerne essentiellement la gestion des volumes.
Je viens de tester la création d'un container postgresql dont voici le Dockerfile :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
FROM debian:stretch
MAINTAINER Stéphane <stephane@localhost>

RUN apt-get update && apt-get -y -q install wget gnupg2
RUN wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" > /etc/apt/sources.list.d/pgdg.list
RUN apt-get update && apt-get -y -q install postgresql-10 postgresql-client-10

USER postgres
RUN /etc/init.d/postgresql start \
  && psql --command "CREATE USER test WITH SUPERUSER PASSWORD 'test';" \
  && psql --command "CREATE DATABASE test WITH OWNER = test;"

USER root
RUN echo "host all  all    0.0.0.0/0  md5" >> /etc/postgresql/10/main/pg_hba.conf
RUN echo "listen_addresses='*'" >> /etc/postgresql/10/main/postgresql.conf

EXPOSE 5433

RUN mkdir -p /var/run/postgresql && chown -R postgres /var/run/postgresql
VOLUME ["/etc/postgresql", "/var/log/postgresql", "/var/lib/postgresql"]

USER postgres
CMD ["/usr/lib/postgresql/10/bin/postgres", "-D", "/var/lib/postgresql/10/main", "-c", "config_file=/etc/postgresql/10/main/postgresql.conf"]
La construction du container fonctionne très bien et si je le lance je peux me connecter sans soucis à la base de test sur le port 5433
Ce que je tente de faire c'est d'avoir les 3 volumes prédéfini dans le Dockerfile à un autre enplacement, par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
sur l'hôte        | sur le container
/home/test/pg/etc | /etc/postgresql
/home/test/pg/log | /var/log/postgresql
/home/test/pg/lib | /var/lib/postgresql
J'ai vu qu'il était possible de définir les volume avec l'option -v appelée autant de fois qu'il y a de volumes.
Le soucis c'est que si je lance mon container avec cette option, j'ai une erreur comme quoi le fichier "postgresql.conf" est introuvable :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
/home/test/pg $ 
└─ $ ▶ docker run -i -t \
>  -v /home/test/pg/etc:/etc/postgresql \
>  -v /home/test/pg/lib:/var/lib/postgresq \
>  -v /home/test/pg/log:/var/log/postgresql \
>  -p 5433:5432 stephane/postgresql:10
postgres: could not access the server configuration file "/etc/postgresql/10/main/postgresql.conf": No such file or directory
Ce qui est normal vu que le dossier "/home/test/pg/etc" est vide...
Donc question :
Est-il possible de définir les volumes dans le Dockerfile pour qu'ils poitent directement vers les dossiers voulu ?

N'hésitez pas à me dire si ce n'est pas clair