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 plateforme Docker cloud CaaS (Containers as a Service) prête à l'emploi, conçue pour des déploiements de containers rapides et fiables :
- Déployez en production avec une simple commande
docker-compose up. Aucune configuration supplémentaire n'est nécessaire : lancez simplement vos containers.- Choisissez votre propre nom de domaine, automatiquement sécurisé en HTTPS (par exemple : https://api.votre-entreprise.com, https://www.votre-entreprise.com ou https://backoffice.votre-entreprise.com).
- Profitez de hautes performances et d'une sécurité renforcée sur une infrastructure privée et dédiée.
- Appliquez les mises à jour en un clic pour une maintenance simple et sans effort.
Vos containers peuvent être en production en environ cinq minutes. Stackhero gère pour vous l'infrastructure, les mises à jour et la sécurité, afin que vous puissiez vous concentrer sur le développement de vos applications. Découvrez-en plus sur l'hébergement cloud Docker CaaS.
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.
Préparer votre premier déploiement en production
Avant de déployer votre application en production, vous devez préparer quelques fichiers de configuration :
- Copiez
secrets/global.production.exampleensecrets/global.production. - Modifiez
secrets/global.productionet remplacez<XXXXXX>.stackhero-network.compar le nom d'hôte de votre service Docker disponible sur votre tableau de bord Stackhero. - Copiez
secrets/my-app.production.exampleensecrets/my-app.production. - Modifiez
secrets/my-app.productionet renseignez vos identifiants. - Mettez à jour
docker/docker-compose.production.ymlen remplaçant<XXXXXX>.stackhero-network.compar le nom d'hôte de votre service Docker.
Déployer en production
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.
Afficher les logs
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-DDpar la date souhaitée), exécutez :make production-logs | grep "YYYY-MM-DD"
Personnaliser les noms de domaine
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.comvia votre conteneurmy-appsur le port 5000 avec chiffrement TLS, modifiez le fichierdocker/docker-compose.production.ymlen remplaçant la sectionlabelspar :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.comvia votre conteneurmy-appsur le port 5000 et rediriger toutes les requêtes dewww.my-company.comversmy-company.com, modifiez la sectionlabelsdans 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.cometwww.my-company.comafin que chacun pointe en CNAME vers votre service Docker à l'adressehttps://<XXXXXX>.stackhero-network.com.