Docker: Produktionsplattform
Diese Dokumentation ist Teil des Node.js-Leitfadens. Den vollständigen Leitfaden finden Sie hier: Wie man eine Node.js-App mit Docker nutzt und bereitstellt.
👋 Willkommen in der Stackhero-Dokumentation!
Stackhero bietet eine einsatzbereite Docker Cloud CaaS (Containers as a Service) Lösung, die zahlreiche Vorteile bietet, darunter:
- Einfache Bereitstellung Ihrer Container in der Produktion mit nur einem
docker-compose up.- Anpassbarer Domainname gesichert mit HTTPS (zum Beispiel, https://api.ihre-firma.com, https://www.ihre-firma.com, https://backoffice.ihre-firma.com).
- Optimale Leistung und robuste Sicherheit durch eine private und dedizierte VM.
- Mühelose Updates mit nur einem Klick.
Sparen Sie Zeit und vereinfachen Sie Ihr Leben: Es dauert nur 5 Minuten, um die Docker CaaS Cloud Hosting Lösung von Stackhero auszuprobieren und Ihre Container in der Produktion bereitzustellen!
Wenn Sie noch keinen Stackhero for Docker-Dienst haben, können Sie einen einfach über Ihr Stackhero-Dashboard erstellen. Er wird innerhalb von etwa 2 Minuten aktiviert.
Wenn Sie neu bei Stackhero sind, können Sie das Docker-Container-Cloud-Hosting einen Monat lang kostenlos ausprobieren.
Bereiten Sie Ihre erste Bereitstellung in der Produktion vor
Bevor Sie Ihre App in der Produktion bereitstellen, müssen Sie einige Konfigurationsdateien vorbereiten:
- Kopieren Sie
secrets/global.production.examplenachsecrets/global.production. - Bearbeiten Sie
secrets/global.productionund ersetzen Sie<XXXXXX>.stackhero-network.comdurch den Hostnamen Ihres Docker-Dienstes aus Ihrem Stackhero-Dashboard. - Kopieren Sie
secrets/my-app.production.examplenachsecrets/my-app.production. - Bearbeiten Sie
secrets/my-app.productionund fügen Sie Ihre Anmeldeinformationen ein. - Aktualisieren Sie
docker/docker-compose.production.yml, indem Sie<XXXXXX>.stackhero-network.comdurch den Hostnamen Ihres Docker-Dienstes ersetzen.
In der Produktion bereitstellen
Die Bereitstellung in der Produktion ist einfach: führen Sie aus:
make production-deploy
Dieser Befehl erstellt einen Docker-Container, überträgt Ihre Projektdaten und sendet sie an Ihren Docker-Dienst in der Produktion. Öffnen Sie Ihren Browser und navigieren Sie zu Ihrem Docker-Dienst-Hostname (z. B. https://<XXXXXX>.stackhero-network.com). Sie sollten sehen, dass Ihre REST-API "Hello World" antwortet.
Sie können auch
make productionverwenden, das Ihre Container bereitstellt und Echtzeitprotokolle anzeigt.
Protokolle anzeigen
Um Ihre Produktionsumgebung zu überwachen oder Probleme zu beheben, können Sie Ihre Protokolle mit diesen Befehlen anzeigen:
- Um Live-Protokolle zu streamen, führen Sie aus:
make production-logs-live - Um alle gespeicherten Protokolle abzurufen, führen Sie aus:
make production-logs - Um Protokolle für einen bestimmten Tag abzurufen (ersetzen Sie
YYYY-MM-DDdurch das gewünschte Datum), führen Sie aus:make production-logs | grep "YYYY-MM-DD"
Domainnamen anpassen
Wenn Sie einen anderen Domainnamen als https://<XXXXXX>.stackhero-network.com verwenden möchten, integriert Stackhero for Docker Traefik, um die Domainverwaltung zu vereinfachen. Traefik übernimmt das HTTP-Routing und die TLS-Verschlüsselung (HTTPS) für Sie.
Hier sind einige Beispiele, um Ihre Domainnamen anzupassen:
-
Um
api.my-company.comüber Ihren Containermy-appauf Port 5000 mit TLS-Verschlüsselung bereitzustellen, aktualisieren Sie die Dateidocker/docker-compose.production.yml, indem Sie den Abschnittlabelsersetzen mit:labels: - "traefik.enable=true" # Traefik aktivieren, um den Verkehr zu diesem Container zu leiten - "traefik.http.routers.my-app.rule=Host(`api.my-company.com`)" # Host definieren - "traefik.http.routers.my-app.tls.certresolver=letsencrypt" # Letsencrypt für TLS-Zertifikate verwenden - "traefik.http.services.my-app.loadbalancer.server.port=5000" # Port 5000 angeben -
Um
my-company.comüber Ihren Containermy-appauf Port 5000 bereitzustellen und alle Anfragen vonwww.my-company.comzumy-company.comumzuleiten, aktualisieren Sie den Abschnittlabelsin derselben Datei mit:labels: - "traefik.enable=true" - "traefik.http.routers.my-app.rule=Host(`my-company.com`) || Host(`www.my-company.com`)" # Beide Domains einschließen - "traefik.http.routers.my-app.tls.certresolver=letsencrypt" - "traefik.http.services.my-app.loadbalancer.server.port=5000" # Port 5000 angeben # www.my-company.com zu my-company.com umleiten: - "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"
Vergessen Sie nicht, das DNS für
my-company.comundwww.my-company.comso zu konfigurieren, dass jeder als CNAME auf Ihren Docker-Dienst unterhttps://<XXXXXX>.stackhero-network.comzeigt.