Navigation

Contactez-nous

Kitpages
17 rue de la Frise
38000 Grenoble
tel : 04 58 00 33 81

Par Philippe Le Van (twitter accountplv) Dernière mise à jour : 28 September 2015

Guide de survie pour postgres / docker / systemd

Introduction

Ce tuto permet d'installer une base postgres et quelque commandes de bases pour créer des users, des bases et configurer des accès.

Nous sommes partis sur les bases suivantes :

  • Installation sur une Debian 8 (Jessie)
  • Nous utilisons l'image officielle postgres sur le docker hub
  • Nous lançons postgresql avec systemd

Installation avec docker

L'installation la plus simple est avec docker et systemd. Pour cela on a besoin de 2 fichiers :

  • un fichier /lib/systemd/system/postgres.service qui indique à systemd comment lancer postgres
  • un fichier /etc/sysconfig/postgres qui contient le passwd root de la base postgres dans un envfile docker (pour éviter que le password root de postgres se balade en clair dans un "ps -edf" sur le host.

Le fichier postgres.service :

[Unit]
Description=Postgresql
After=docker.service

[Service]
ExecStartPre=-/bin/bash -c 'mkdir -p /var/lib/postgres/data'
ExecStartPre=-/usr/bin/docker kill postgres
ExecStartPre=-/usr/bin/docker rm postgres
ExecStart=/usr/bin/docker run \
    -v /var/lib/postgres/data:/var/lib/postgresql/data \
    --env-file=/etc/sysconfig/postgres \
    --name postgres \
    postgres

ExecStop=/usr/bin/docker stop postgres

[Install]
WantedBy=multi-user.target

Le fichier /etc/sysconfig/postgres

POSTGRES_USER=root
POSTGRES_PASSWORD=xxxx

Lancer et arrêter postgres

# à chaque changement de conf du fichier .service :
systemctl daemon-reload

# lancer postgres
systemctl start postgres

# arrêter postgres
systemctl stop postgres

# voir le status du postgres lancé
systemctl status postgres

Créer un user pour une appli

pour créer un user sur la base postgres, vous pouvez utiliser la méthode suivante :

 

# entrer dans le docker de postgres
docker exec -ti postgres /bin/bash

# lancer psql (en user root => connexion auto sans passwd sur le user root de postgres)
psql

# les commandes SQL
CREATE USER toto;
CREATE DATABASE mydb;
GRANT ALL PRIVILEGES ON DATABASE mydb TO toto;
ALTER ROLE toto WITH PASSWORD 'xxxx';

# ressortir de psql :
\q

Conclusion

Systemd et docker, c'est un peu une tuerie pour installer rapidement une appli. Ca vaut vraiment le coup de vous renseigner là dessus.

Si vous voyez des coquilles dans ce tuto ou si vous souhaitez le compléter, n'hésitez pas à écrire des commentaires.

Commentaires

Ajouter un commentaire