Outils pour utilisateurs

Outils du site


sio:stage2:docker

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
sio:stage2:docker [27/01/2016 10:39]
charly [Présentation des commandes]
sio:stage2:docker [10/02/2016 14:51]
viper61 Scripts
Ligne 165: Ligne 165:
 docker run -dtiv /data/postgres/var/lib/postgresql/data:/var/lib/postgresql/data --name postgres -h postgres debiandockerdev2:5000/cg44/postgres:latest docker run -dtiv /data/postgres/var/lib/postgresql/data:/var/lib/postgresql/data --name postgres -h postgres debiandockerdev2:5000/cg44/postgres:latest
 </code> </code>
 +
 +Ainsi que le script d'initialisation
 +<code>
 +#!/bin/bash
 +
 +if [[ -z "$(ls -A "$PGDATA")" || "$1" = "master" || "$1" = "slave" ]]
 +then
 +  if [ -z "$(ls -A "$PGDATA")" ]
 +  then
 +    chmod 700 $PGDATA
 +    chown -R postgres $PGDATA
 +    initdb
 +
 +    sed -i "s,#listen_addresses = 'registry.cg44.fr',listen_addresses = '*',g" $PGDATA/postgresql.conf
 +    sed -i "s,#data_directory = 'ConfigDir',data_directory = '$PGDATA',g" $PGDATA/postgresql.conf
 +    sed -i "s,#hba_file = 'ConfigDir/pg_hba.conf',hba_file = '$PGDATA/pg_hba.conf',g" $PGDATA/postgresql.conf
 +    echo "host    all             all             172.17.0.0/16                md5" >> $PGDATA/pg_hba.conf
 +
 +    pg_ctl -D $PGDATA -o "-c listen_addresses=''" -w start
 +
 +    psql -U postgres << EOF
 +      create user $DBUSER createdb;
 +      alter user $DBUSER encrypted password '$DBPWD';
 +      create database $DBBASE template template0 encoding 'unicode';
 +      alter database $DBBASE owner to $DBUSER;
 +      grant all privileges on database $DBBASE to $DBUSER;
 +EOF
 +
 +    echo "L'utilisateur et la base de données ont bien été créer et sont préte !"
 +  fi
 +
 +  if [ "$1" = "master" ]
 +  then
 +    echo "master"
 +    if [ ! $(pgrep postgres) ]
 +    then
 +      pg_ctl -D $PGDATA -o "-c listen_addresses=''" -w start
 +    fi
 +    echo "création $REPUSER"
 +    psql -U postgres << EOF
 +      create user $REPUSER replication;
 +      alter user $REPUSER encrypted password '$REPPWD';
 +EOF
 +
 +    sed -i "s,#wal_level = minimal,wal_level = hot_standby,g" $PGDATA/postgresql.conf
 +    sed -i "s,#max_wal_senders = 0,max_wal_senders = 1,g" $PGDATA/postgresql.conf
 +
 +  elif [ "$1" = "slave" ]
 +  then
 +    sed -i "s,#hot_standby = off,hot_standby = on,g" $PGDATA/postgresql.conf
 +    echo "standby_mode = 'on'" > $PGDATA/recovery.conf
 +    echo "primary_conninfo = 'host=$REPMASTERIP port=5432 user=$REPUSER password=$REPPWD'" >> $PGDATA/recovery.conf
 +  fi
 +
 +else
 +  postgres -D $PGDATA
 +fi
 +</code>
 +
 +===== Scripts =====
 +Nous avons réalisé trois scripts permettant de facilité certaines opérations.
 +
 +Le premier consiste à effacer l'ensemble des images sans tag, lister sous le tag //<none>// :
 +  #!/bin/bash
 +  docker rmi $(docker images | grep "^<none>" | awk '{print $3}')
 +
 +Le second nous permet de déclencher l'arrêt de l'ensemble des conteneurs actif sur notre machine :
 +  #!/bin/bash
 +  docker stop $(docker ps -a -q)
 +
 +Enfin, le dernier nous permet d'arrêter, détruire puis reconstruire de nouveaux conteneurs pour notre mode "brick" Postegre / PHP / Apache :
 +  #! /bin/sh
 +  # Fonction d'arret et suppression
 +  clean() {
 +    process=$(docker ps -a)
 +  
 +    echo "Arret du conteneur $1 + suppresion"
 +  
 +    if ( echo $process | grep "$1" > /dev/null ); then
 +      docker stop $1
 +      docker rm $1
 +    fi
 +  }
 +  
 +  # Fonction de lancement
 +  start() {
 +    echo "Start conteneur $1"
 +  
 +    /docker/$1/run.sh
 +  
 +    sleep 5
 +  }
 +  
 +  # Nettoyage des conteneurs
 +  clean "postgres"
 +  clean "php"
 +  clean "apache"
 +  
 +  # Demarrage des conteneurs
 +  start "postgres"
 +  start "php"
 +  start "apache"
 +  
 +
sio/stage2/docker.txt · Dernière modification: 18/09/2016 02:54 (modification externe)