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
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).