Ci-dessous, les différences entre deux révisions de la page.
sio:stage2:docker [08/02/2016 16:41] charly [Postgres run.sh] |
sio:stage2:docker [18/09/2016 02:54] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Utilisation de docker ====== | ||
- | ===== Objectif ===== | ||
- | L' | ||
- | ===== Présentation des commandes ===== | ||
- | Il existe de nombreuse commande sur docker, le liste complète est disponible en utilisant //docker --help// nous allons ici présenter les plus importante pour débuter avec docker. \\ | ||
- | |||
- | attach | ||
- | build | ||
- | commit | ||
- | cp Copier des fichiers/ | ||
- | create | ||
- | diff Vérifier les changements sur le conteneur | ||
- | events | ||
- | exec Exécuter une commande dans le conteneur cible | ||
- | history | ||
- | images | ||
- | logs Voir les logs du conteneur | ||
- | port Voir la liste des ports redirigés par le proxy docker sur le conteneur | ||
- | ps Lister les conteneurs démarré (avec l' | ||
- | pull Télécharger une image depuis un registre | ||
- | push Envoyer une image sur un registre | ||
- | restart | ||
- | rm Supprimer un ou plusieurs conteneurs | ||
- | rmi | ||
- | run | ||
- | search | ||
- | start | ||
- | stats | ||
- | stop Arrêter un ou plusieurs conteneurs | ||
- | tag Tager une image dans un registre | ||
- | top Voir les processus en cours d’exécution dans le conteneur | ||
- | volume | ||
- | ===== Docker build ===== | ||
- | Avec les différentes commandes que nous avons vue précédemment nous pouvons créer des Dockerfile qui vont nous permettre de construire une image. | ||
- | ==== Apache 2 Dockerfile ==== | ||
- | < | ||
- | # On definit quel est l' | ||
- | FROM cg44/ | ||
- | # Les personnes qui maintiennent cette image | ||
- | MAINTAINER Laurent Souchet < | ||
- | MAINTAINER Charly Beaupeux | ||
- | |||
- | # Les varibles d' | ||
- | ENV APACHE_RUN_USER=www-data \ | ||
- | APACHE_RUN_GROUP=www-data \ | ||
- | APACHE_LOG_DIR=/ | ||
- | APACHE_LOCK_DIR=/ | ||
- | APACHE_PID_FILE=/ | ||
- | |||
- | # Les différentes commandes pour installer apache ainsi que les modules nécessaire | ||
- | RUN apt-get update -y \ | ||
- | && apt-get install -y --no-install-recommends apache2 apache2-mpm-worker apache2-mpm-event libapache2-mod-fcgid \ | ||
- | && a2dismod mpm_prefork \ | ||
- | && a2enmod ssl rewrite proxy proxy_fcgi actions alias env headers mime dir \ | ||
- | # On supprime le cache apt pour alléger l' | ||
- | && rm -rf / | ||
- | |||
- | # On indique à Docker les ports que le conteneur écoute | ||
- | EXPOSE 80 443 | ||
- | |||
- | # Dossier de données que l'on rends pérenne | ||
- | VOLUME ["/ | ||
- | |||
- | # La commande executer au demarrage du conteneur | ||
- | ENTRYPOINT ["/ | ||
- | </ | ||
- | ==== PHP-fpm Dockerfile ==== | ||
- | < | ||
- | # On definit quel est l' | ||
- | FROM cg44/ | ||
- | # Les personnes qui maintiennent cette image | ||
- | MAINTAINER Laurent Souchet < | ||
- | MAINTAINER Charly Beaupeux | ||
- | |||
- | # Les varibles d' | ||
- | RUN apt-get update -y && \ | ||
- | apt-get install -y --no-install-recommends php5-fpm php5-curl php5-ldap php5-memcache php5-memcached \ | ||
- | php5-mssql php5-mysqlnd php5-pgsql php5-sqlite php5-xdebug php5-gd && \ | ||
- | rm -rf / | ||
- | |||
- | # Les différentes commandes pour installer php5 ainsi que les modification à effectuer dans le fichier de configuration | ||
- | RUN sed -i " | ||
- | sed -i " | ||
- | sed -i " | ||
- | sed -i " | ||
- | sed -i " | ||
- | sed -i " | ||
- | sed -i "/ | ||
- | sed -i "/ | ||
- | sed -i "/ | ||
- | |||
- | # On indique à Docker les ports que le conteneur écoute | ||
- | EXPOSE 9000 | ||
- | |||
- | # Dossier de données que l'on rends pérenne | ||
- | VOLUME ["/ | ||
- | |||
- | # La commande executer au demarrage du conteneur | ||
- | ENTRYPOINT ["/ | ||
- | </ | ||
- | ==== Postgres Dockerfile ==== | ||
- | < | ||
- | # On definit quel est l' | ||
- | FROM cg44/ | ||
- | # Les personnes qui maintiennent cette image | ||
- | MAINTAINER Laurent Souchet < | ||
- | MAINTAINER Charly Beaupeux | ||
- | |||
- | # Les varibles d' | ||
- | ENV PG_MAJOR=9.4 | ||
- | ENV PG_VERSION=9.4.5-0+deb8u1 | ||
- | ENV PGDATA=/ | ||
- | ENV PGDIR=/ | ||
- | ENV DBUSER=unusual | ||
- | ENV DBPWD=5uP3r? | ||
- | ENV DBBASE=anydb | ||
- | ENV PATH=/ | ||
- | |||
- | # Les différentes commandes pour installer postgres ainsi que les dossier nécessaire | ||
- | RUN apt-get update -y \ | ||
- | && apt-get install -y --no-install-recommends postgresql-$PG_MAJOR=$PG_VERSION \ | ||
- | && mkdir -p / | ||
- | && chown -R postgres / | ||
- | # On supprime le cache apt pour alléger l' | ||
- | && rm -rf / | ||
- | |||
- | # On copie le script dans le conteneur | ||
- | COPY init.sh / | ||
- | |||
- | # On indique à Docker les ports que le conteneur écoute | ||
- | EXPOSE 5432 | ||
- | |||
- | # Dossier de données que l'on rends pérenne | ||
- | VOLUME ["/ | ||
- | |||
- | # On change d' | ||
- | USER postgres | ||
- | |||
- | # On change le dossier de travail | ||
- | WORKDIR / | ||
- | |||
- | # La commande executer au demarrage du conteneur | ||
- | ENTRYPOINT ["/ | ||
- | </ | ||
- | |||
- | ===== Docker run ===== | ||
- | |||
- | ==== Apache 2 run.sh ==== | ||
- | < | ||
- | #!/bin/bash | ||
- | |||
- | docker run -dti -p 80:80 -p 443:443 --link php --name apache -v / | ||
- | </ | ||
- | ==== PHP-fpm run.sh ==== | ||
- | < | ||
- | #!/bin/bash | ||
- | |||
- | docker run -dtiv / | ||
- | </ | ||
- | ==== Postgres run.sh ==== | ||
- | < | ||
- | #!/bin/bash | ||
- | |||
- | docker run -dtiv / | ||
- | </ | ||
- | |||
- | Ainsi que le script d' | ||
- | < | ||
- | #!/bin/bash | ||
- | |||
- | if [[ -z "$(ls -A " | ||
- | then | ||
- | if [ -z "$(ls -A " | ||
- | then | ||
- | chmod 700 $PGDATA | ||
- | chown -R postgres $PGDATA | ||
- | initdb | ||
- | |||
- | sed -i " | ||
- | sed -i " | ||
- | sed -i " | ||
- | echo " | ||
- | |||
- | pg_ctl -D $PGDATA -o "-c listen_addresses=''" | ||
- | |||
- | psql -U postgres << EOF | ||
- | create user $DBUSER createdb; | ||
- | alter user $DBUSER encrypted password ' | ||
- | create database $DBBASE template template0 encoding ' | ||
- | alter database $DBBASE owner to $DBUSER; | ||
- | grant all privileges on database $DBBASE to $DBUSER; | ||
- | EOF | ||
- | |||
- | echo " | ||
- | fi | ||
- | |||
- | if [ " | ||
- | then | ||
- | echo " | ||
- | if [ ! $(pgrep postgres) ] | ||
- | then | ||
- | pg_ctl -D $PGDATA -o "-c listen_addresses=''" | ||
- | fi | ||
- | echo " | ||
- | psql -U postgres << EOF | ||
- | create user $REPUSER replication; | ||
- | alter user $REPUSER encrypted password ' | ||
- | EOF | ||
- | |||
- | sed -i " | ||
- | sed -i " | ||
- | |||
- | elif [ " | ||
- | then | ||
- | sed -i " | ||
- | echo " | ||
- | echo " | ||
- | fi | ||
- | |||
- | else | ||
- | postgres -D $PGDATA | ||
- | fi | ||
- | </ |