Conteneur Nginx
Exercice
L'objectif de cet exercice est de créer votre propre conteneur Docker Nginx
personnalisé. Pour cela, nous allons dans un premier temps construire notre propre image Nginx
puis dans un second temps la personnaliser en y ajoutant un le contenu d'un site web
Question
Construisez une image Nginx
en se basant sur l'image de base de debian
en version stretch
Indice
L'instruction FROM
permet de sélectionner l'image de base
Indice
Il est nécessaire de modifier le fichier /etc/nginx/nginx.conf pour faire fonctionner nginx dans un conteneur.
daemon off;
user www-data;
worker_processes 1;
error_log stderr error;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
access_log stdout;
server {
listen 80;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
client_max_body_size 100M;
client_body_buffer_size 128k;
location ~ /\.ht {
deny all;
}
location ~ /(data|conf|bin|inc|config|lib)/ {
deny all;
}
}
}
Indice
On utilise l'instruction COPY
pour remplacer le fichier.
Indice
Pour lancer nginx, on utilise la commande /usr/sbin/nginx
Solution
FROM debian:stretch
RUN apt-get update && \
apt-get install -y nginx
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 80
CMD ["/usr/sbin/nginx"]
docker build -t nginx .
On peut maintenant lancer notre nouvelle image et vérifier son bon fonctionnement
docker run --rm -p 80 :80 nginx
On peut maintenant ouvrir son navigateur à l'adresse http://127.0.0.1:80 et vérifier que l'on a bien accès à la page d'accueil d'nginx
Question
Nous avons développé une nouvelle application web que nous souhaitons héberger dans notre conteneur nginx. https://github.com/abarbare/api-run-app
Faites un nouveau Dockerfile utilisant en image de base l'image Nginx
que nous venons de construire
Indice
Vous pouvez télécharger l'application sur votre ordinateur puis la copier dans le conteneur. Il est aussi possible de télécharger l'app directement dans votre Dockerfile à l'aide de la commande git
Indice
L'application est à ajouter dans le dossier /var/www/html.
Indice
Les fichiers de l'application doivent appartenir à l'utilisateur www-data
:www-data
Solution
FROM nginx
COPY --chown=www-data:www-data api-run-app/ /var/www/html/
FROM nginx
ARG APP=https://github.com/abarbare/api-run-app.git
RUN apt-get update && \
apt-get install -y git && \
rm -Rf /var/www/html/ && \
git clone $APP /var/www/html/ && \
chown -R www-data:www-data /var/www/html/
L'utilisation de la directive ARG
permet de construire une image différente sans avoir à modifier le Dockerfile. Si l'on souhaite construire une image pour une application similaire https://github.com/abarbare/ansible-meetup-app il suffit de construire l'image avec la commande suivante
docker build -t mon-app --build-arg APP=https://github.com/abarbare/ansible-meetup-app.git .
docker run --rm -p 80 :80 app
On peut maintenant ouvrir son navigateur à l'adresse http://127.0.0.1:80 et vérifier que l'on a bien accès à notre application