Accéder au contenu principal

Comment créer une image Docker NGINX personnalisée ?

Apprenez à mettre en place, configurer et optimiser NGINX dans Docker. Ce guide couvre l'exécution de conteneurs, le service de contenu personnalisé, la construction d'images, la mise en place d'un proxy inverse et l'utilisation de Docker Compose pour un déploiement efficace.
Actualisé 26 mars 2025  · 10 min de lecture

NGINX dans un conteneur Docker peut fournir un service web fiable dans de nombreux environnements. Vous pouvez travailler sur un site web personnel, un service web léger ou un projet de laboratoire domestique. Docker peut vous aider à maintenir la cohérence entre différentes machines et configurations. Cette approche permet d'exécuter NGINX avec moins de problèmes de surcharge lorsque vous passez du développement à la production. Il est courant de s'appuyer sur Docker pour l'empaquetage simple du serveur web, ce qui facilite le partage de vos projets sans étapes manuelles fastidieuses.

Cet article explique comment exécuter une image NGINX prête à l'emploi, comment servir du contenu à partir de votre machine locale et comment construire votre image avec des fonctionnalités personnalisées. Il couvre également les étapes de configuration d'un proxy inverse, ainsi que l'utilisation de Docker Compose pour le déploiement multiservice. Au final, vous verrez comment gérer les conteneurs avec quelques commandes simples et aurez une vue détaillée de la façon d'intégrer Docker et NGINX pour des tâches pratiques.

Si vous êtes novice en matière de Docker, n'hésitez pas à consulter notre guide Docker pour les débutants pour en apprendre l'essentiel.

Qu'est-ce que Docker NGINX ?

Docker NGINX fait référence à l'exécution du serveur web NGINX dans un conteneur léger. Les conteneurs Docker sont semblables à de petits paquets qui contiennent une application et toutes les dépendances dont elle a besoin. 

NGINX est un serveur web populaire connu pour ses performances élevées, sa configuration facile et sa gestion flexible du trafic HTTP. L'association de NGINX avec Docker est intéressante car elle permet de conserver un environnement cohérent. Si vous déployez sur macOS, Windows ou Linux, le contenu du conteneur reste le même. Cela signifie qu'il se comporte de manière identique, quel que soit le système d'exploitation hôte.

Une image Docker typique pour NGINX comprend le logiciel du serveur, une configuration par défaut et une structure de répertoire pour les fichiers hébergés. Vous pouvez exécuter ce conteneur immédiatement ou l'adapter en mappant des dossiers spécifiques, en ajustant les fichiers de configuration ou en construisant une image basée sur votre propre fichier Docker. Ce faisant, vous pouvez ajouter des modules ou des scripts personnalisés pour adapter NGINX à votre application.

Composants de Docker NGINX

Pour en savoir plus sur la conteneurisation des applications, consultez notre article Comment conteneuriser une application à l'aide de Docker. Il explique plus en détail comment conteneuriser des applications d'apprentissage automatique avec Docker de manière conviviale pour les débutants. 

Conditions préalables

Avant de commencer à exécuter des conteneurs NGINX, confirmez que Docker est installé. Docker dispose d'installateurs officiels pour macOS, Windows et diverses distributions Linux. La documentation Docker fournit un processus étape par étape pour chaque système d'exploitation. 

Consultez notre Introduction à Docker pour obtenir un guide complet sur la façon de démarrer avec Docker.

Testez votre installation à l'aide d'une commande rapide telle que :

docker version
derrickmwiti@Derricks-MacBook-Pro% docker version
Client:
 Version:           28.0.1
 API version:       1.48
 Go version:        go1.23.6
 Git commit:        068a01e
 Built:             Wed Feb 26 10:38:16 2025
 OS/Arch:           darwin/arm64
 Context:           desktop-linux
Server: Docker Desktop 4.39.0 (184744)
 Engine:
  Version:          28.0.1
  API version:      1.48 (minimum version 1.24)
  Go version:       go1.23.6
  Git commit:       bbd0a17
  Built:            Wed Feb 26 10:40:57 2025
  OS/Arch:          linux/arm64
  Experimental:     false
 containerd:
  Version:          1.7.25
  GitCommit:        bcc810d6b9066471b0b6fa75f557a15a1cbf31bb
 runc:
  Version:          1.2.4
  GitCommit:        v1.2.4-0-g6c52b3f
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Si vous voyez les détails de la version, cela signifie que Docker est prêt. En plus de Docker lui-même, vous avez besoin d'un accès à Internet pour extraire l'image NGINX de Docker Hub. Si vous envisagez de créer votre image, vous aurez besoin d'un éditeur de texte pour écrire un Dockerfile. N'importe quel éditeur de texte convient, mais choisissez celui qui vous convient le mieux.

Configurer NGINX dans un conteneur Docker

L'exécution de NGINX à partir d'une image prête à l'emploi est généralement la méthode la plus rapide. Vous pouvez l'extraire de Docker Hub en quelques secondes et lancer un conteneur. Ensuite, vous verrez la page par défaut dans votre navigateur. Ce processus court est souvent la première étape dans de nombreuses configurations de serveur basées sur Docker.

Extraction de l'image Docker NGINX

L'image officielle de NGINX est disponible publiquement sur Docker Hub sous le nom nginx.

Tirez-la comme suit :

docker pull nginx
derrickmwiti@Derricks-MacBook-Pro % docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
4c7c1a5bd3af: Download complete 
bef2ee7fab45: Download complete 
d9b636547744: Downloading [======================>                            ]  12.58MB/28.04MB
0994e771ba34: Downloading [===>                                               ]  3.146MB/40.56MB
589701e352f8: Download complete 
13f89c653285: Download complete 
8e77214beb25: Download complete 

Cette opération permet d'accéder au registre et d'obtenir la dernière version. Lorsque tout est terminé, vous pouvez vérifier qu'il existe sur votre machine :

docker images
derrickmwiti@Derricks-MacBook-Pro% docker images
REPOSITORY                                                                     TAG                                                                           IMAGE ID       CREATED         SIZE

nginx                                                                          latest                                                                        124b44bfc9cc   6 weeks ago     280MB
keras-custom-training-container                                                latest                                                                                                                                     <none>                                                                        7de0f04013e5   7                                                  

Cette commande affiche une liste d'images dans votre bibliothèque locale. Vous devriez voir l'image nginx dans le tableau. Cela signifie que vous êtes prêt à créer un conteneur à partir de celui-ci. Découvrez une liste d'images dont vous auriez besoin pour vos projets de science des données à partir de notre Les 12 meilleures images de conteneurs Docker pour l'apprentissage automatique et l'IA tutoriel.

Exécuter le conteneur NGINX

Une fois que l'image NGINX est sur votre système, vous pouvez démarrer le conteneur avec une simple commande :

docker run --name mynginx -p 8080:80 -d nginx
derrickmwiti@Derricks-MacBook-Pro % docker run --name mynginx -p 8080:80 -d nginx
ec44d1a43016e9684b602437b967c0ed8e11c933a8a76b341b68c25168d2af70

Cette commande a plusieurs effets. Il exécute un conteneur nommé mynginx en arrière-plan (à cause de l'option -d ). Il fait correspondre le port 8080 de votre machine hôte au port 80 à l'intérieur du conteneur. Ce mappage de port signifie que vous pouvez visiter http://localhost:8080 dans votre navigateur et voir la page par défaut de NGINX. Le conteneur utilise l' image nginx tirée de Docker Hub.

Le nouveau conteneur devrait continuer à fonctionner car NGINX est actif. Si vous vérifiez les journaux avec :

docker logs mynginx
derrickmwiti@Derricks-MacBook-Pro % docker logs mynginx
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2025/03/20 04:33:10 [notice] 1#1: using the "epoll" event method
2025/03/20 04:33:10 [notice] 1#1: nginx/1.27.4
2025/03/20 04:33:10 [notice] 1#1: built by gcc 12.2.0 (Debian 12.2.0-14) 
2025/03/20 04:33:10 [notice] 1#1: OS: Linux 6.10.14-linuxkit
2025/03/20 04:33:10 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2025/03/20 04:33:10 [notice] 1#1: start worker processes
2025/03/20 04:3

Vous pouvez voir tous les messages écrits par NGINX. 

Servir du contenu personnalisé avec NGINX

Il se peut que vous souhaitiez servir une page HTML plutôt que la page par défaut incluse dans l'image du conteneur. Vous pouvez créer un simple fichier sur votre machine locale, puis le monter dans le conteneur. Cela permet de séparer votre contenu du contenant. Chaque fois que vous modifiez votre page, vous pouvez actualiser le navigateur pour voir les changements.

Création d'une page HTML personnalisée

Choisissez un emplacement pratique sur votre machine locale. Peut-être un dossier appelé html_content dans votre répertoire personnel. Créez un fichier index.html à cet endroit. Cela pourrait ressembler à ceci :

<html>
<head>
    <title>My NGINX Page</title>
</head>
<body>
    <h1>Hello from my Docker NGINX setup!</h1>
    <p>This is a custom page served from a local folder.</p>
</body>
</html>

Il s'agit d'une page HTML de base. Vous pouvez ajouter le texte ou le style que vous souhaitez. Ajoutez des images ou du JavaScript, ou tout ce qui vous convient.

Montage de la page HTML dans le conteneur NGINX

L'image officielle de NGINX sert par défaut le contenu de /usr/share/nginx/html. Vous pouvez faire correspondre votre dossier local à cet emplacement à l'intérieur du conteneur. Pour ce faire, vous devez utiliser l'option -v (volume) dans Docker. Arrêtez tout conteneur existant nommé mynginx pour éviter un conflit de port :

docker stop mynginx
docker rm mynginx

Commencez alors un nouveau conteneur :

docker run --name mynginx -p 8080:80 -d \
    -v /Users/derrickmwiti/Documents/html_content:/usr/share/nginx/html \
    nginx
6f68085733eeac418c3302e5c580a4f7c5c0c36d3591d8e2a7f35f69f6308d18

Remplacez /path/to/html_content par le chemin d'accès réel sur votre ordinateur. Ainsi, chaque fois que vous naviguerez sur http://localhost:8080le conteneur servira le fichier HTML que vous avez placé dans html_content. Par défaut, si vous l'appelez index.html, NGINX chargera ce fichier automatiquement.

Montage de la page HTML dans le conteneur NGINX

Cette approche est avantageuse lorsque vous souhaitez adapter régulièrement le contenu. Vous ne devez pas reconstruire le conteneur à chaque fois. Le serveur extrait le contenu de votre dossier local à la volée. 

Si vous voyez un avertissement lié à la permission, vous devrez peut-être vous assurer que votre utilisateur local et Docker peuvent lire ce dossier. 

Sous Linux, il peut s'agir de modifier les droits de propriété ou les autorisations d'accès aux fichiers. Sous Windows ou macOS, il peut s'agir d'accorder à Docker l'autorisation d'accéder à votre disque.

Construire une image Docker NGINX personnalisée

Le montage d'un dossier local est une solution rapide pour des tests simples. Vous pouvez avoir besoin de modules supplémentaires, d'une configuration spéciale ou d'une autre adaptation. C'est là que la construction d'une image peut s'avérer utile. 

Docker facilite la création d'un petit fichier de recettes, appelé Dockerfile, qui configure un conteneur exactement comme vous le souhaitez. Vous disposerez alors d'une image que vous pourrez partager avec d'autres personnes ou envoyer dans un registre. Cela peut être plus pratique que de dire aux gens de monter un tas de fichiers locaux.

Création d'un fichier Docker

Un Dockerfile est un simple fichier texte. Vous pouvez l'appeler Dockerfile ou choisir un autre nom si vous préférez. Placez-la dans un nouveau répertoire. Voici un exemple simple :

FROM nginx:latest

COPY index.html /usr/share/nginx/html/index.html

Il utilise l'image officielle nginx:latest comme base. Ensuite, il copie un fichier local nommé index.html dans le dossier de contenu web par défaut du conteneur. Vous pouvez inclure plus de lignes si vous en avez besoin. Par exemple, vous pouvez copier un site nginx.conf personnalisé ou ajouter des modules que vous souhaitez installer. Cela dépend de vos besoins. Si vous souhaitez simplement placer une page statique, l'extrait ci-dessus suffit.

Une fois le fichier Docker en place, ajoutez le fichier personnalisé index.html dans le même dossier. Ensuite, vous pouvez construire. La commande typique est la suivante :

docker build -t mynginximage .
[+] Building 2.6s (7/7) FINISHED                                                                                                                                                       docker:desktop-linux
 => [internal] load build definition from Dockerfile                                                                                                                                                   0.0s
 => => transferring dockerfile: 245B                                                                                                                                                                   0.0s
 => [internal] load metadata for docker.io/library/nginx:latest                                                                                                                                        0.0s
 => [internal] load .dockerignore                                                                                                                                                                      0.0s
 => => transferring context: 2B                                                                                                                                                                        0.0s
 => [internal] load build context                                                                                                                                                                      0.0s
 => => transferring context: 365B                                                                                                                                                                      0.0s
 => [1/2] FROM docker.io/library/nginx:latest@sha256:124b44bfc9ccd1f3cedf4b592d4d1e8bddb78b51ec2ed5056c52d3692baebc19                                                                                  2.3s
 => => resolve docker.io/library/nginx:latest@sha256:124b44bfc9ccd1f3cedf4b592d4d1e8bddb78b51ec2ed5056c52d3692baebc19                                                                                  2.3s
 => [2/2] COPY index.html /usr/share/nginx/html/index.html                                                                                                                                             0.0s
 => exporting to image                                                                                                                                                                                 0.1s
 => => exporting layers                                                                                                                                                                                0.0s
 => => exporting manifest sha256:19dd719772fd7ac839fadb7d49862f84422f4571a442994ffaca152e9674553a                                                                                                      0.0s
 => => exporting config sha256:e974f3ab92a0278e419f0fe4c5a6fc43fafb4a75da27895d90c4f2d5d385daa1                                                                                                        0.0s
 => => exporting attestation manifest sha256:e391b0212e5a100bd9132fbbd6cb4052e288dbbcba093839b55f8b197131372b                                                                                          0.0s
 => => exporting manifest list sha256:d35c2bbe10ab0b7e46d1ef8fba6c6cb28628eb9c283db02607e32e95b62e14d5                                                                                                 0.0s
 => => naming to docker.io/library/mynginximage:latest                                                                                                                                                 0.0s
 => => unpacking to docker.io/library/mynginximage:latest                                                                                                                                              0.0s

Le point à la fin indique que le répertoire actuel est le contexte de construction. Docker lit le fichier Dockerfile dans ce répertoire. Vous obtenez une image appelée mynginximage sur votre système local. Vérifiez-le avec :

docker images
mynginximage                                                                   latest                                                                        d35c2bbe10ab   36 seconds ago   281MB

Vous devriez voir le nouveau nom dans la liste. Cette approche signifie que votre fichier Docker et HTML sont combinés en une seule image. Vous n'avez pas besoin de monter quoi que ce soit au moment de l'exécution.

Construction et exécution de l'image personnalisée

Maintenant que vous avez construit mynginximage, vous pouvez l'exécuter :

docker run --name mycustomnginx -p 8080:80 -d mynginximage

Veillez à arrêter le conteneur précédent pour éviter les conflits de port. 

Ce conteneur sert automatiquement la page que vous avez placée dans le fichier Docker. Si vous ouvrez un navigateur à l' adresse http://localhost:8080, vous devriez voir ce texte HTML. 

Construction et exécution de l'image personnalisée

Vous pouvez partager votre fichier Docker avec d'autres personnes ou pousser l'image construite vers un registre. Ensuite, vos coéquipiers ou collègues peuvent l'utiliser sans avoir à copier les dossiers locaux.

Ceci termine le processus de construction d'une image NGINX personnalisée minimale. Vous êtes parti de la base officielle, vous avez copié un ou deux fichiers et vous avez produit un nouveau conteneur qui inclut votre site personnalisé. Vous pouvez étendre le fichier Docker à d'autres éléments. Par exemple, vous pourriez vouloir changer la configuration pour gérer PHP avec php-fpm dans une construction en plusieurs étapes ou ajouter des modules personnalisés que NGINX ne fournit pas par défaut.

Cette approche met en évidence la flexibilité de Docker : chaque couche du fichier Docker peut gérer une certaine tâche, et l'image finale peut être distribuée facilement. Vous avez le contrôle sur le contenu web et la possibilité de modifier les paramètres pour que votre conteneur soit adapté à votre projet. 

Explorez ces 10 idées de projets Docker pour apprendre Docker avec des projets pratiques axés sur la création et l'optimisation d'applications de science des données.

Configurer NGINX en tant que Reverse Proxy

NGINX peut diriger les requêtes entrantes vers d'autres services sur le même système ou même vers des services fonctionnant sur des machines distinctes. C'est ce qu'on appelle généralement une configuration de proxy inverse. Vous pouvez placer NGINX devant un groupe d'applications afin que les requêtes passent par un point d'entrée unique. 

Ceci est courant lorsque vous avez plusieurs conteneurs Docker qui écoutent sur différents ports, et que vous voulez un seul nom de domaine pour tout. NGINX écoute sur un port standard, tel que 80 ou 443, puis achemine le trafic vers le bon service en fonction du chemin d'accès, du nom d'hôte ou d'autres facteurs.

Comprendre le reverse proxy

Lorsque NGINX est configuré de cette manière, le client n'est pas au courant de la communication en arrière-plan. NGINX joue le rôle de façade publique, en recevant et en transmettant les demandes, puis en renvoyant les réponses au client. 

Cette conception simplifie la structure de votre réseau. Il permet également d'ajuster la mise en cache, d'ajouter des certificats TLS, de gérer l'équilibrage de la charge ou d'effectuer d'autres tâches avancées. Il est souvent plus facile de gérer ces tâches en un seul endroit, plutôt que de les disperser entre plusieurs services.

Un scénario typique peut impliquer un conteneur exécutant NGINX sur le port 80, qui envoie des requêtes à un conteneur d'application sur le port 3000. Lorsque le client visite http://yourdomain.com, le trafic est dirigé vers un conteneur séparé dans les coulisses. 

Cela pourrait permettre à votre conteneur d'application de conserver son port par défaut, avec une surcharge minimale pour l'utilisateur. Une autre raison de le faire est que vous pouvez souhaiter cacher les détails internes de vos services ou présenter une structure URL uniforme.

Configurer NGINX pour le reverse proxy

Pour ce faire, vous avez besoin d'un fichier de configuration pour le NGINX personnalisé qui utilise des directives de proxy. Vous pouvez le faire en montant un nouveau fichier de configuration lorsque vous lancez le conteneur, ou en construisant une image personnalisée qui l'inclut. Voici un exemple simple pour illustrer l'idée générale :

server {
    listen 80;

    location / {
        proxy_pass http://myapp:3000/;
    }
}

Dans l'extrait ci-dessus, toute requête qui arrive à votre conteneur NGINX sur le port 80 est envoyée à myapp:3000. Le nom myapp suggère qu'il existe un autre conteneur accessible par ce nom, ce qui est courant lorsque vous utilisez le réseau Docker .

Si vous utilisez des conteneurs autonomes, vous pouvez mapper l'adresse IP du conteneur ou utiliser l'IP de l'hôte. Vous pouvez également ajouter des paramètres plus avancés, tels que proxy_set_header Host $host, ou ajuster les valeurs des délais d'attente en fonction de votre application.

Si vous choisissez de monter ce fichier au moment de l'exécution, vous pouvez procéder comme suit :

docker run --name nginxproxy -p 8080:80 -d \
    -v /path/to/nginx.conf:/etc/nginx/conf.d/default.conf \
    --network mynetwork \
    nginx

Cette commande lance le conteneur NGINX, en montant votre nginx.conf local comme configuration par défaut. Il connecte également le conteneur à un réseau Docker appelé mynetwork, où réside votre autre conteneur (myapp). C'est souvent l'approche la plus simple si vous souhaitez conserver votre configuration en dehors du conteneur. 

Il est également possible de placer ce fichier dans un Dockerfile si vous souhaitez un arrangement statique. L'une ou l'autre approche peut fonctionner, à condition que les références correspondent à la façon dont vous nommez vos conteneurs et vos réseaux.

Cette conception vous permet d'avoir un seul domaine ou une seule IP pour tous vos services web, ainsi qu'un port commun. Si vous avez affaire à plusieurs conteneurs back-end, vous pouvez définir plusieurs emplacements dans votre configuration, chacun pointant vers un port de conteneur différent. NGINX peut alors acheminer chaque service en fonction du chemin d'accès à l'URL. Il s'agit d'une approche populaire pour les microservices, car elle consolide les points d'entrée de manière ordonnée.

Utilisation de Docker Compose pour le déploiement de NGINX

Un proxy inverse devient souvent plus utile lorsque vous avez plusieurs conteneurs qui fonctionnent ensemble. Docker Compose est un outil qui vous permet de définir plusieurs services dans un seul fichier. Vous pouvez ensuite les faire monter ou descendre d'une simple commande. Il réduit les risques d'erreurs lors de la création de conteneurs ou du mappage des ports, car tous les détails se trouvent dans un fichier standard.

Introduction à Docker Compose

Docker Compose vous permet de gérer des ensembles de conteneurs. Vous décrivez chaque service, spécifiez l'image à utiliser, les ports à publier, les volumes à monter et les réseaux à rejoindre. Ensuite, une simple commande (docker compose up -d ) lancera tout en même temps .

Cette approche est pratique pour le développement local ou pour les environnements de staging où vous devez coordonner plusieurs conteneurs Docker. Le format de fichier habituel est YAML.

Bien que Docker Compose puisse fonctionner sur différents systèmes d'exploitation, vous devez vous assurer qu'il est installé et reconnu. Les installations modernes de Docker Desktop l'incluent souvent par défaut. Vérifiez votre version avec :

docker compose version
Docker Compose version v2.33.1-desktop.1

Si vous voyez les détails de la version, vous êtes prêt à continuer. Si ce n'est pas le cas, consultez la documentation de Docker pour savoir comment activer ou installer Docker Compose.

Création d'un fichier docker-compose.yml

Le fichier comprend généralement une section sur les services. Vous trouverez ci-dessous un exemple simple de fichier docker-compose.yml qui configure un seul conteneur NGINX pour servir du contenu statique : 

services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html

Voici comment interpréter le fichier :

  • les services : Définit les services (conteneurs) qui composent votre application.
  • web : Ce service utilise la dernière image de NGINX.
    • ports : Le port 80 à l'intérieur du conteneur est relié au port 8080 de votre machine hôte. Cela vous permet d'accéder au serveur web via http://localhost:8080.
    • volumes : Monte le répertoire local html dans le répertoire de contenu par défaut de NGINX à l'intérieur du conteneur (/usr/share/nginx/html). Cette configuration permet à NGINX de servir votre contenu statique personnalisé.

Déployer des services avec Docker Compose

Dans le même répertoire que votre fichier docker-compose.yml, créez un sous-répertoire nommé html.

Placez vos fichiers HTML statiques (par exemple, index.html) dans ce répertoire html. Dans ce cas, j'ai créé une simple page de style Bootstrap pour la démonstration. 

Ouvrez un terminal et accédez au répertoire de votre projet contenant le fichier docker-compose.yml.

Exécutez la commande suivante pour démarrer le service :

docker compose up -d
[+] Running 1/1
 ✔ Container html_content-web-1  Started 

L' option -d exécute le conteneur en mode détaché, ce qui lui permet de fonctionner en arrière-plan.

Docker Compose consulte le fichier docker-compose.yml dans le répertoire actuel. Il extrait toutes les images qui ne sont pas déjà présentes, puis lance chaque conteneur. 

Ouvrez votre navigateur web et naviguez vers http://localhost:8080.

Vous devriez voir votre contenu statique servi par NGINX.

Déployer des services avec Docker Compose

Vous pouvez vérifier l'état de vos services en cours d'exécution :

docker compose ps

Si vous devez tout démolir, une seule commande suffit pour retirer les conteneurs :

docker compose down

Cela les arrête et les supprime tous en même temps. Si vous souhaitez reproduire l'ensemble de l'environnement, il vous suffit de copier le fichier Docker Compose et le code correspondant sur une nouvelle machine, puis d'exécuter les mêmes commandes. Cela vous permet d'obtenir des résultats cohérents avec un minimum d'étapes manuelles.

Gestion des conteneurs NGINX

Bien que l'approche Docker Compose soit populaire pour les flux de travail multiservices, vous avez parfois besoin de gérer un seul conteneur ou un petit cluster. Docker fournit quelques commandes de base qui vous permettent de voir ce qui est en cours d'exécution, de mettre en pause ou d'arrêter les conteneurs, et de les supprimer si nécessaire. 

Ils sont essentiels pour la gestion, en particulier si vous expérimentez avec plusieurs conteneurs NGINX ou des constructions répétées.

Visualisation des conteneurs en cours d'exécution

Lorsque vous voulez voir quels conteneurs sont en cours d'exécution, vous pouvez utiliser :

docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                  NAMES
2d386c085129   mynginximage   "/docker-entrypoint.…"   4 minutes ago   Up 4 minutes   0.0.0.0:8080->80/tcp   mycustomnginx

Cette commande permet d'imprimer un tableau des conteneurs actifs, chacun d'entre eux ayant un identifiant, une image, un nom, etc. Si vous souhaitez voir tous les conteneurs, y compris ceux qui se sont arrêtés, utilisez :

docker ps -a

Elle affiche tous les conteneurs existant sur votre système, même ceux qui sont sortis. Il est souvent utile de voir quels sont les conteneurs des anciennes séries qui sont encore là. Vous avez peut-être des conteneurs nommés mynginx, mycustomnginx, ou autre chose si vous avez expérimenté avec des images multiples.

Arrêt et retrait des conteneurs

Lorsque vous avez terminé avec un conteneur, vous pouvez l'arrêter par son nom :

docker stop mynginx
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                  NAMES
2d386c085129   mynginximage   "/docker-entrypoint.…"   4 minutes ago   Up 4 minutes   0.0.0.0:8080->80/tcp   mycustomnginx

Cela indique à Docker d'envoyer un signal d'arrêt au conteneur, ce qui devrait permettre à NGINX de s'arrêter proprement. Si vous souhaitez retirer le conteneur immédiatement après, vous pouvez le faire :

docker rm mynginx

Si vous préférez une commande unique qui arrête et supprime en une seule fois, essayez :

docker rm -f mynginx

Cela force le retrait, en arrêtant le conteneur s'il est encore en cours d'exécution. Soyez prudent lorsque vous utilisez cette approche dans un environnement de production, car elle met fin au conteneur sans lui donner un arrêt gracieux. Une autre commande de nettoyage est docker rmi, qui supprime les images de votre système .

Cette fonction est utile si vous n'avez plus besoin de certaines images et que vous souhaitez libérer de l'espace. Cependant, Docker ne supprime que les images qui ne sont pas utilisées par un conteneur en cours d'exécution.

Conclusion

NGINX dans Docker est un moyen pratique de servir des pages web ou d'acheminer du trafic vers d'autres services. Vous pouvez exécuter l'image officielle ou construire la vôtre à l'aide d'un simple fichier Docker. Docker Compose peut coordonner plusieurs conteneurs, ce qui facilite la gestion des configurations complexes. 

Ces méthodes vous permettent de diffuser du contenu, de gérer le transfert et de maintenir un environnement fiable pour les projets web. 

Si vous avez besoin d'une approche plus pratique pour apprendre Docker, consultez notre Cours d'introduction à Docker pour découvrir son importance dans la boîte à outils des professionnels des données.

NGINX Docker FAQs

Comment exécuter un conteneur NGINX à l'aide de Docker ?

Vous pouvez démarrer un conteneur NGINX avec la commande suivante :

docker run --name mynginx -p 8080:80 -d nginx

Cela fait tourner un conteneur NGINX en arrière-plan et fait correspondre le port 8080 de votre machine au port 80 à l'intérieur du conteneur. Vous pouvez ensuite y accéder en visitant http://localhost:8080 dans votre navigateur.

Comment puis-je servir du contenu personnalisé avec NGINX dans Docker ?

Pour servir vos fichiers HTML, montez un répertoire local sur le conteneur NGINX comme ceci :

docker run --name mynginx -p 8080:80 -d -v /path/to/html:/usr/share/nginx/html nginx

Remplacez /path/to/html par le chemin d'accès à vos fichiers HTML. Le conteneur servira le contenu de ce répertoire au lieu de la page par défaut.

Comment configurer NGINX en tant que proxy inverse dans Docker ?

Créez un fichier nginx.conf personnalisé avec le contenu suivant :

server {
    listen 80;
    location / {
        proxy_pass http://myapp:3000/;
    }
}

Ensuite, lancez le conteneur NGINX avec le fichier de configuration monté :

docker run --name nginxproxy -p 8080:80 -d -v /path/to/nginx.conf:/etc/nginx/conf.d/default.conf nginx

Les requêtes provenant de http://localhost:8080 seront transmises à votre application fonctionnant sur le port 3000.

Comment puis-je utiliser Docker Compose pour déployer NGINX avec d'autres services ?

Créez un fichier docker-compose.yml avec le contenu suivant :

services:
  myapp:
    image: myappimage
    expose:
      - "3000"

  nginxproxy:
    image: nginx
    ports:
      - "8080:80"
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - myapp

Exécutez les services avec :

docker compose up -d

Cela permet de démarrer votre application et le proxy NGINX en une seule commande.

Comment arrêter et supprimer un conteneur NGINX dans Docker ?

Pour arrêter un conteneur NGINX en cours d'exécution, utilisez :

docker stop mynginx

Pour supprimer complètement le conteneur, exécutez :

docker rm mynginx

Si vous souhaitez supprimer le conteneur et son image, vous pouvez également supprimer l'image avec :

docker rmi nginx

Cette opération permet de nettoyer le conteneur et son image stockée sur votre système.

Sujets

Les meilleurs cours de DataCamp

Cursus

Containerization and Virtualization with Docker and Kubernetes

0 min
Learn the power of Docker and Kubernetes, this interactive track will allow you to build and deploy applications in modern environments.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow