Bonjour,
Ma question concerne essentiellement la gestion des volumes.
Je viens de tester la création d'un container postgresql dont voici le Dockerfile :
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
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"]
Ce que je tente de faire c'est d'avoir les 3 volumes prédéfini dans le Dockerfile à un autre enplacement, par exemple :
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.
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
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 :
Ce qui est normal vu que le dossier "/home/test/pg/etc" est vide...
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
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
Partager