Docker – DockerFile

Salut !

Après avoir vu comment mettre en place une plateforme docker dans un environnement Windows, nous allons voir ensemble comment automatiser le déploiement de ces conteneurs Docker.

Pour cela, nous allons créer un fichier d’automatisation des actions (DockerFile) pour déployer un conteneur de manière autonome.

Dans notre scénario nous souhaitons:

  • Récupérer un conteneur Debian depuis le Hub officiel
  • Installer Apache2, Php, Sqlite, Curl …
  • Déployer un blog WordPress

A la fin de l’exécution de ce dockerfile, nous aurons ainsi une plateforme de blog WordPress opérationnelle.

  • DockerFile:

Pour déployer un dockerfile facilement dans un environement Boot2docker, je vous recommande de transférer votre fichier dockerfile à l’aide SCP (Vous pouvez utiliser l’utilitaire WinSCP par exemple). Le nom d’utilisateur et mot de passe de la machine virtuelle Boot2docker sont : nom utilisateur: docker ; mot de passe: tcuser

FROM debian:wheezy
MAINTAINER ZiGMaX (zigmax.net)

# Download Apache2/Curl/Php/rsync/wget/unzip
RUN apt-get update && apt-get install -y \
apache2 \
curl \
libapache2-mod-php5 \
php5-curl \
php5-sqlite \
php5-gd \
rsync \
wget \
unzip \
&& rm -rf /var/lib/apt/lists/*

# A2enmod
RUN a2enmod rewrite

# Download and extract wordpress
RUN rm -rf /var/www/
ADD http://wordpress.org/latest.tar.gz /wordpress.tar.gz
RUN tar xvzf /wordpress.tar.gz
RUN mv /wordpress /var/www/
# Fix permissions on all of the files
RUN chown -R www-data:www-data /var/www/

# Sqlite WordPress plugin
RUN curl -o sqlite-plugin.zip https://downloads.wordpress.org/plugin/sqlite-integration.1.8.1.zip
RUN unzip sqlite-plugin.zip -d /var/www/wp-content/plugins/
RUN rm sqlite-plugin.zip
RUN cp /var/www/wp-content/plugins/sqlite-integration/db.php /var/www/wp-content
RUN cp /var/www/wp-config-sample.php /var/www/wp-config.php

#Manually set Apache variables
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2

# Expose port 80 and run Apache
EXPOSE 80
CMD ["/usr/sbin/apache2", "-D", "FOREGROUND"]

 

  • Comprendre le DockerFile

MAINTAINER : nom du mainteneur du DockerFile (Ici c’est nous !)

FROM : image de base (Dans notre scénario Debian)

VOLUME : Point de montage (Non utilisé dans notre scénario)

RUN : commande à exécuter pour installer le conteneur. (Dans notre cas, nous utilisons la commande RUN à de nombreuses reprises pour lancer des commandes « système »)

ENTRYPOINT : commande qui s’exécute au démarrage du conteneur (une seule sera exécutée).

CMD : commande qui s’exécute au démarrage du conteneur.

ADD : Copier un fichier du répertoire courant dans le filesystem du conteneur. (Dans cet exemple pour récupérer la dernière version de WordPress)

USER : utilisateur qui exécute les commandes dans le conteneur. (Non utilisé dans notre scénario)

EXPOSE : Port(s) à exposer à l’exterieur (Dans notre cas le port du serveur web apache)

 

  • Executer son DockerFile

sudo docker build -t dockerwp .

Attention le « . » permet de rechercher un fichier DockerFile dans votre répertoire courant.

 

  • DockerFile: Translation de port

docker run -d -p 80:80 dockerwp

dockerfilewp

 

 

Comme vous avez pu le constater, la syntaxe d’automatisation du DockerFile est plutôt simple. Il est également possible de faire appel à des scripts shells externes ou encore à des agents Puppet / Chef (Je ferai un article pour vous faire une démo prochainement).

Démarrez une conversation

Votre adresse de messagerie ne sera pas publiée.