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) Plattform, die für schnelle und zuverlässige Container-Bereitstellungen entwickelt wurde:

  • Deployment in die Produktion mit nur einem docker-compose up. Es ist keine zusätzliche Konfiguration erforderlich: Starten Sie einfach Ihre Container.
  • Wählen Sie Ihren eigenen Domainnamen, der automatisch per HTTPS gesichert wird (zum Beispiel: https://api.ihr-unternehmen.com, https://www.ihr-unternehmen.com oder https://backoffice.ihr-unternehmen.com).
  • Profitieren Sie von hoher Performance und robuster Sicherheit auf einer privaten, dedizierten Infrastruktur.
  • Updates können mit nur einem Klick angewendet werden – für eine einfache und unkomplizierte Wartung.

Ihre Container sind in etwa fünf Minuten produktiv einsatzbereit. Stackhero übernimmt für Sie das Infrastrukturmanagement, Updates und die Sicherheit, sodass Sie sich ganz auf die Entwicklung Ihrer Anwendungen konzentrieren können. Erfahren Sie mehr über das Docker CaaS Cloud Hosting.

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.

Bevor Sie Ihre App in der Produktion bereitstellen, müssen Sie einige Konfigurationsdateien vorbereiten:

  1. Kopieren Sie secrets/global.production.example nach secrets/global.production.
  2. Bearbeiten Sie secrets/global.production und ersetzen Sie <XXXXXX>.stackhero-network.com durch den Hostnamen Ihres Docker-Dienstes aus Ihrem Stackhero-Dashboard.
  3. Kopieren Sie secrets/my-app.production.example nach secrets/my-app.production.
  4. Bearbeiten Sie secrets/my-app.production und fügen Sie Ihre Anmeldeinformationen ein.
  5. Aktualisieren Sie docker/docker-compose.production.yml, indem Sie <XXXXXX>.stackhero-network.com durch den Hostnamen Ihres Docker-Dienstes ersetzen.

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 production verwenden, das Ihre Container bereitstellt und Echtzeitprotokolle anzeigt.

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-DD durch das gewünschte Datum), führen Sie aus: make production-logs | grep "YYYY-MM-DD"

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 Container my-app auf Port 5000 mit TLS-Verschlüsselung bereitzustellen, aktualisieren Sie die Datei docker/docker-compose.production.yml, indem Sie den Abschnitt labels ersetzen 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 Container my-app auf Port 5000 bereitzustellen und alle Anfragen von www.my-company.com zu my-company.com umzuleiten, aktualisieren Sie den Abschnitt labels in 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.com und www.my-company.com so zu konfigurieren, dass jeder als CNAME auf Ihren Docker-Dienst unter https://<XXXXXX>.stackhero-network.com zeigt.