Avant de continuer, assurez-vous d’avoir installé Docker et Docker-compose et d’avoir configuré votre conteneur Traefik. Pour cela vous pouvez suivre les docs suivantes :
---
# Version du format du fichier docker-compose.yml
version: '3.7'
services:
# On défini le nom du service
Nginx:
# On défini le nom du conteneur
container_name: nginx
# On défini l'image à utiliser
image: nginx:latest
# On défini la politique de redémarrage du conteneur
restart: unless-stopped
# On désactive l'entrypoint défini dans l'image, afin de pouvoir définir notre propre configuration
entrypoint: ''
# On défini les dossiers et fichiers qui seront accessibles depuis le conteneur
volumes:
# On défini que le fichier de configuration du vhost "www.mon-domaine.fr.conf" à utiliser dans le container correspondant au fichier /srv/docker/nginx/conf.d/www.mon-domaine.fr.conf de notre hôte. Il sera accessible en lecture seule
- ./conf/www.mon-domaine.fr.conf:/etc/nginx/conf.d/www.mon-domaine.fr:ro
# On défini les réseaux. J'en ai volontairement créé deux. Afin de pouvoir isoler les futurs conteneurs dans un réseau à part
networks:
nginx_lan:
traefik_lan:
# On défini les paramètres spécifiques à Traefik
labels:
# On active Traefik pour ce conteneur
traefik.enable: True
# On indique à Traefik que les ports accessibles depuis l'hôte, le seront sur le réseau "wan"
traefik.docker.network: traefik_lan
# On indique le nom de l'entrypoints à utiliser. On l'a configuré dans le fochier /srv/docker/traefik/conf/traefik.yml
traefik.http.routers.nginx.entrypoints: web
# On indique l'URL à partir de laquelle l'interface web de Nginx sera accessible
traefik.http.routers.nginx.rule: Host(`www.mon-domaine.fr`)
# On indique à Traefik le port d'écoute du conteneur Nginx
traefik.http.services.nginx.loadbalancer.server.port: 80
# On défini les réseaux liés au conteneur
networks:
nginx_lan:
# On indique que le réseau sera externe. C'est à dire qu'il ne sera pas supprimé lors de la suppression du conteneur
external: True
traefik_lan:
# On indique que le réseau sera externe. C'est à dire qu'il ne sera pas supprimé lors de la suppression du conteneur
external: True
Il nous reste une dernière chose à faire, créer les réseaux qui seront utilisés par notre conteneur (nginx_lan). Pour cela, on tape la commande suivante :
1
# docker network create nginx_lan
Nous devons créer le fichier de configuration du vhost de Nginx. Pour cela, on tape la commande suivante :
1
# vi /srv/docker/nginx/conf/www.mon-domaine.fr.conf
On y copie le contenu suivant :
1
2
3
4
5
6
7
8
9
10
11
12
server {
# On defini le port d'écoute de Nginx dans le conteneur
listen 80;
# On défini l'URL à laquelle Nginx devra répondre
server_name www.mon-domaine.fr;
location / {
# On indique le répertoire contenant les fichiers à afficher
root /usr/share/nginx/html/;
index index.html index.htm;
}
}
Maintenant que l’ensemble des fichiers sont créés, nous pouvons lancer notre conteneur. Pour cela, on tape la commande suivante :
1
# docker-compose -f /srv/docker/nginx/docker-compose.yml up -d
Via l’option “-d” on indique à docker de lancer le conteneur en mode daemon.
Vous pouvez vérifier le bon fonctionnement de votre conteneur en vous connectant sur l’interface web : https://www.mon-domaine.fr/