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 offrant de nombreux avantages, notamment :
- Déployez facilement vos containers en production avec un simple
docker-compose up.- Nom de domaine personnalisable sécurisé avec HTTPS (par exemple, https://api.votre-entreprise.com, https://www.votre-entreprise.com, https://backoffice.votre-entreprise.com).
- Performance optimale et sécurité robuste 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 d'hébergement cloud Docker CaaS de Stackhero et déployer vos containers 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 êtes nouveau sur Stackhero, vous pouvez essayer 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 depuis votre tableau de bord Stackhero. - Copiez
secrets/my-app.production.exampleensecrets/my-app.production. - Modifiez
secrets/my-app.productionet insérez 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 simple : exécutez :
make production-deploy
Cette commande crée un conteneur Docker, transfère les données de votre projet et les envoie à votre service Docker en production. Ouvrez votre navigateur et naviguez vers le 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 également 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 résoudre des problèmes, vous pouvez consulter vos logs en utilisant ces commandes :
- Pour diffuser les logs en direct, exécutez :
make production-logs-live - Pour récupérer tous les logs stockés, exécutez :
make production-logs - Pour récupérer les logs d'un jour spécifique (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 nom de domaine différent de https://<XXXXXX>.stackhero-network.com, Stackhero for Docker intègre Traefik pour simplifier la gestion des domaines. Traefik gère le routage HTTP et le 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, mettez à jour le fichierdocker/docker-compose.production.ymlen remplaçant la sectionlabelspar :labels: - "traefik.enable=true" # Activer Traefik pour router le trafic vers ce conteneur - "traefik.http.routers.my-app.rule=Host(`api.my-company.com`)" # Définir l'hôte - "traefik.http.routers.my-app.tls.certresolver=letsencrypt" # Utiliser letsencrypt pour les certificats TLS - "traefik.http.services.my-app.loadbalancer.server.port=5000" # Spécifier 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, mettez à jour 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`)" # Inclure les deux domaines - "traefik.http.routers.my-app.tls.certresolver=letsencrypt" - "traefik.http.services.my-app.loadbalancer.server.port=5000" # Spécifier le port 5000 # Rediriger 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 tant que CNAME vers votre service Docker àhttps://<XXXXXX>.stackhero-network.com.