- Récupération et modification du compose.yaml
- Lancement et test du service
- Diagnostic et debugging
- Intégration du service dans le tunnel cloudflare
Afin de créer un nouveau service, on va taper <NOM DU SERVICE> docker compose sur les internets afin de trouver un exemple de fichier compose.yml et pouvoir le paramétrer à notre guise.
On peut également trouver beaucoup d'exemples et de ressources sur Docker Hub
Pour l'exemple on va ici récupérer ce template
services:
web:
image: nginx
volumes:
- ./templates:/etc/nginx/templates
restart: unless-stopped
ports:
- "8080:80"
environment:
- NGINX_HOST=foobar.com
- NGINX_PORT=80Petite explication des différents champs :
-
image: la référence de l'image enregistré sur le docker Hub, vous n'aurez jamais à changer ce champ
-
volumes: Vous aurez parfois besoin de modifier des fichiers de configuration ou autres une fois votre docker lancé, pour se faire, il faut
binderun répertoire sur votre machine avec un répertoire présent dans le système du docker-
ici le dossier
templatessera créé à la racine ou est présente votre fichiercompose.ymlet sera relié au dossier/etc/nginx/templates -
Chaque fois que vous modifierez ou ajouterez des fichiers dans votre dossier local
templatescelui ci sera pris en compte dans le docker (avec besoin de redémarrer le docker ou non selon les cas)
-
-
ports: Ici on bind les ports interne au docker avec le port sur lequel sera présent votre service sur votre serveur
-
8080:80signifie donc que votre service sera disponible sur le port8080de votre serveur -
Si conflits, vous pouvez changer le port de gauche, mais ne jamais toucher au port de droite, propre au docker
-
-
restart: Indispensable de le mettre a
unless-stoppedoualwayssi vous voulez que votre docker au démarrage de votre machine -
environment: des variables spécifiques au conteneur docker, on peut facilement trouver sur les différentes documentations les valeurs possibles à configurer
Pour créer le fichier on peut suivre cette suite de commande :
mkdir nginx
cd nginx
sudo nano compose.ymlOn peut désormais lancer notre docker avec la commande :
docker compose up -dSi tout va bien, vous pouvez donc vous connecter sur votre navigateur à l'adresse
localhost:<port>(exemple :localhost:8080) ou<adresse tailscale du serveur>:<port>(exemple :100.116.11.79:8080)
Ici au lancement de mon service, j'ai un message d'erreur très explicite :
Il indique sur le port 8080 est déjà alloué sur mon serveur
Je vais donc modifier le champ ports de mon compose.yml pour le passer à un port disponible : 8088:80
Youpi ! Mon service est bien disponible désormais
Parfois le service ne fonctionne pas du premier coup mais on ne sait pas vraiment pourquoi.
Pour affiner notre enquête on peut aller consulter les logs du conteneur docker avec la commande suivante :
docker logs nginx-web-1Je n'ai pas inventé le nom du conteneur, je l'ai trouvé facilement grâce à la tabulation.
Si on ne le trouve pas avec la tabulation on le trouve en faisant la commande :
docker psLe résultat du docker logs s'affiche, on peut continuer notre enquête !

On veut désormais rendre disponible notre service sous notre nom de domaine et en https, on va donc l'intégrer à notre tunnel Cloudflare.
Prérequis: avoir déjà un tunnel cloudflare installé et configuré sur notre serveur Créer son propre tunnel Cloudflare
Sur le site Web de cloudflare, il faut aller dans DNS -> Records (enregistrements) pour venir y ajouter un nouvel enregistrement.
- Type: CNAME
- Name: Le nom que l'on souhaite (il sera préfixé sur notre nom de domaine, exemple : nginx.monserveur.com )
- Target: copier-coller la même information que sur les autres
On va maintenant définir sur notre serveur, quel service doit être redirigé vers notre nouvelle URL nginx.monserveur.com
Pour se faire on va venir taper cette commande
sudo nano ~/.cloudflared/config.ymlOn vient ensuite modifier le fichier comme ci-dessous
tunnel: <TUNNEL-ID>
credentials-file: <PATH-TO-CREDENTIALS-FILES>
ingress:
- hostname: nginx.remzik.com
service: http://localhost:8088
- service: http_status:404
En ajoutant en hostname la route désirée, et service l'adresse locale du service
On peut finalement venir redémarrer notre tunnel cloudlare afin que les modifications soient prises en compte :
sudo systemctl restart cloudflaredVictoire ! Notre site est bien disponible sur notre url, et en https !




