Utiliser ENTRYPOINT dans le Dockerfile
Dans cette étape, nous allons apprendre à utiliser l'instruction ENTRYPOINT et à configurer un port différent (9100) via un script.
-
Dans WebIDE, ouvrez à nouveau le Dockerfile.
-
Modifiez le contenu du Dockerfile comme suit :
FROM nginx
COPY index.html /usr/share/nginx/html/
COPY start.sh /start.sh
RUN chmod +x /start.sh
ENTRYPOINT ["/start.sh"]
Ce Dockerfile supprime la variable d'environnement fixe et la commande sed directe. À la place, nous gérerons la configuration au moment de l'exécution via un script ENTRYPOINT. Cela rend notre image beaucoup plus flexible.
- Créez un nouveau fichier nommé
start.sh dans le même répertoire avec le contenu suivant :
#!/bin/bash
## Set a default port if NGINX_PORT is not set
export NGINX_PORT=${NGINX_PORT:-9100}
## Replace the port in the nginx configuration
sed -i "s/listen[[:space:]]*80;/listen $NGINX_PORT;/g" /etc/nginx/conf.d/default.conf
echo "Starting Nginx on port $NGINX_PORT"
nginx -g 'daemon off;'
Ce script définit un port par défaut, modifie la configuration Nginx au démarrage du conteneur, affiche un message indiquant le port utilisé, puis lance Nginx.
-
Enregistrez les deux fichiers dans WebIDE.
-
Dans le terminal WebIDE, reconstruisez l'image Docker :
docker build -t my-nginx-entrypoint .
- Lancez un conteneur basé sur cette image en forçant le port à 9100 via une variable d'environnement.
docker run -d -p 9100:9100 -e NGINX_PORT=9100 --name entrypoint-container my-nginx-entrypoint
- Consultez les logs du conteneur pour voir le message de démarrage :
docker logs entrypoint-container
Vous devriez voir le message "Starting Nginx on port 9100" dans la sortie.
- Vérifiez que le serveur web répond correctement sur le nouveau port :
curl http://localhost:9100
Le contenu HTML de index.html devrait s'afficher.