Docker: Plateforme de production

Cette documentation fait partie du guide Node.js. Consultez le guide complet ici : Comment utiliser et déployer une application Node.js avec Docker.

👋 Bienvenue sur la documentation de Stackhero !

Stackhero propose une solution Docker cloud CaaS (Containers as a Service) prête à l'emploi qui offre de nombreux avantages, notamment :

  • Déployez facilement vos conteneurs en production avec un simple docker-compose up.
  • Nom de domaine personnalisable sécurisé en HTTPS (par exemple, https://api.votre-entreprise.com, https://www.votre-entreprise.com, https://backoffice.votre-entreprise.com).
  • Performance optimale et sécurité renforcée grâce à une VM privée et dédiée.
  • Mises à jour simplifiées en un clic.

Gagnez du temps et simplifiez-vous la vie : il suffit de 5 minutes pour essayer la solution Docker CaaS cloud hosting de Stackhero et déployer vos conteneurs en production !

Si vous n'avez pas encore de service Stackhero for Docker, vous pouvez en créer un facilement depuis votre tableau de bord Stackhero. Il sera activé en environ 2 minutes.

Si vous découvrez Stackhero, vous pouvez tester l'hébergement cloud de conteneurs Docker gratuitement pendant un mois.

Avant de déployer votre application en production, vous devez préparer quelques fichiers de configuration :

  1. Copiez secrets/global.production.example en secrets/global.production.
  2. Modifiez secrets/global.production et remplacez <XXXXXX>.stackhero-network.com par le nom d'hôte de votre service Docker disponible sur votre tableau de bord Stackhero.
  3. Copiez secrets/my-app.production.example en secrets/my-app.production.
  4. Modifiez secrets/my-app.production et renseignez vos identifiants.
  5. Mettez à jour docker/docker-compose.production.yml en remplaçant <XXXXXX>.stackhero-network.com par le nom d'hôte de votre service Docker.

Le déploiement en production est très simple : exécutez :

make production-deploy

Cette commande crée un conteneur Docker, transfère les données de votre projet et les envoie sur votre service Docker en production. Ouvrez votre navigateur et accédez au nom d'hôte de votre service Docker (par exemple, https://<XXXXXX>.stackhero-network.com). Vous devriez voir votre API REST répondre "Hello World".

Vous pouvez aussi utiliser make production, qui déploie vos conteneurs et affiche les logs en temps réel.

Pour surveiller votre environnement de production ou diagnostiquer un problème, vous pouvez consulter vos logs avec ces commandes :

  • Pour suivre les logs en temps réel, exécutez : make production-logs-live
  • Pour récupérer tous les logs stockés, exécutez : make production-logs
  • Pour afficher les logs d'une journée précise (remplacez YYYY-MM-DD par la date souhaitée), exécutez : make production-logs | grep "YYYY-MM-DD"

Si vous souhaitez utiliser un autre nom de domaine que https://<XXXXXX>.stackhero-network.com, Stackhero for Docker intègre Traefik pour simplifier la gestion des domaines. Traefik s'occupe du routage HTTP et du chiffrement TLS (HTTPS) pour vous.

Voici quelques exemples pour personnaliser vos noms de domaine :

  • Pour servir api.my-company.com via votre conteneur my-app sur le port 5000 avec chiffrement TLS, modifiez le fichier docker/docker-compose.production.yml en remplaçant la section labels par :

        labels:
          - "traefik.enable=true" # Active Traefik pour router le trafic vers ce conteneur
          - "traefik.http.routers.my-app.rule=Host(`api.my-company.com`)" # Définit le host
          - "traefik.http.routers.my-app.tls.certresolver=letsencrypt" # Utilise letsencrypt pour les certificats TLS
          - "traefik.http.services.my-app.loadbalancer.server.port=5000" # Spécifie le port 5000
    
  • Pour servir my-company.com via votre conteneur my-app sur le port 5000 et rediriger toutes les requêtes de www.my-company.com vers my-company.com, modifiez la section labels dans le même fichier avec :

        labels:
          - "traefik.enable=true"
          - "traefik.http.routers.my-app.rule=Host(`my-company.com`) || Host(`www.my-company.com`)" # Inclut les deux domaines
          - "traefik.http.routers.my-app.tls.certresolver=letsencrypt"
          - "traefik.http.services.my-app.loadbalancer.server.port=5000" # Spécifie le port 5000
    
          # Redirige www.my-company.com vers my-company.com :
          - "traefik.http.routers.my-app.middlewares=redirect-www"
          - "traefik.http.middlewares.redirect-www.redirectregex.regex=^https://www.my-company.com/(.*)"
          - "traefik.http.middlewares.redirect-www.redirectregex.replacement=https://my-company.com/$${1}"
          - "traefik.http.middlewares.redirect-www.redirectregex.permanent=true"
    

N'oubliez pas de configurer le DNS pour my-company.com et www.my-company.com afin que chacun pointe en CNAME vers votre service Docker à l'adresse https://<XXXXXX>.stackhero-network.com.