Docker: Productieplatform

Deze documentatie maakt deel uit van de Node.js-gids. Bekijk de volledige gids hier: Hoe een Node.js-app te gebruiken en te implementeren met Docker.

Welkom bij de Stackhero-documentatie

Stackhero biedt een gebruiksklaar Docker cloud CaaS (Containers as a Service) platform, ontworpen voor snelle en betrouwbare containerdeployments:

  • Zet uw containers direct in productie met slechts één docker-compose up. Er is geen extra configuratie nodig: start gewoon uw containers.
  • Kies uw eigen domeinnaam, automatisch beveiligd met HTTPS (bijvoorbeeld: https://api.uw-bedrijf.com, https://www.uw-bedrijf.com of https://backoffice.uw-bedrijf.com).
  • Profiteer van hoge prestaties en sterke beveiliging op een privé, dedicated infrastructuur.
  • Voer updates uit met één klik voor eenvoudige, moeiteloze onderhoud.

Uw containers kunnen binnen ongeveer vijf minuten live in productie zijn. Stackhero beheert de infrastructuur, updates en beveiliging voor u, zodat u zich kunt richten op het leveren van uw applicaties. Lees meer over Docker CaaS cloud hosting.

Als u nog geen Stackhero for Docker service heeft, kunt u er eenvoudig een maken vanuit uw Stackhero-dashboard. Het wordt binnen ongeveer 2 minuten geactiveerd.

Als u nieuw bent bij Stackhero, kunt u de Docker-container cloud hosting een maand gratis proberen.

Voordat u uw app naar productie implementeert, moet u enkele configuratiebestanden voorbereiden:

  1. Kopieer secrets/global.production.example naar secrets/global.production.
  2. Bewerk secrets/global.production en vervang <XXXXXX>.stackhero-network.com door uw Docker-service-hostnaam vanuit uw Stackhero-dashboard.
  3. Kopieer secrets/my-app.production.example naar secrets/my-app.production.
  4. Bewerk secrets/my-app.production en voeg uw inloggegevens in.
  5. Werk docker/docker-compose.production.yml bij door <XXXXXX>.stackhero-network.com te vervangen door uw Docker-service-hostnaam.

Implementeren naar productie is eenvoudig: voer uit:

make production-deploy

Deze opdracht maakt een Docker-container, verplaatst uw projectgegevens en stuurt deze naar uw Docker-service in productie. Open uw browser en navigeer naar uw Docker-service-hostnaam (bijvoorbeeld, https://<XXXXXX>.stackhero-network.com). U zou uw REST API "Hello World" moeten zien antwoorden.

U kunt ook make production gebruiken, dat uw containers implementeert en realtime logs weergeeft.

Om uw productieomgeving te monitoren of problemen op te lossen, kunt u uw logs bekijken met deze opdrachten:

  • Om live logs te streamen, voert u uit: make production-logs-live
  • Om alle opgeslagen logs op te halen, voert u uit: make production-logs
  • Om logs voor een specifieke dag op te halen (vervang YYYY-MM-DD door de gewenste datum), voert u uit: make production-logs | grep "YYYY-MM-DD"

Als u een andere domeinnaam wilt gebruiken in plaats van https://<XXXXXX>.stackhero-network.com, integreert Stackhero for Docker Traefik om domeinbeheer te vereenvoudigen. Traefik beheert HTTP-routing en TLS-versleuteling (HTTPS) voor u.

Hier zijn een paar voorbeelden om uw domeinnamen aan te passen:

  • Om api.my-company.com te bedienen via uw container my-app op poort 5000 met TLS-versleuteling, werkt u het bestand docker/docker-compose.production.yml bij door de sectie labels te vervangen door:

        labels:
          - "traefik.enable=true" # Traefik inschakelen om verkeer naar deze container te routeren
          - "traefik.http.routers.my-app.rule=Host(`api.my-company.com`)" # Definieer de host
          - "traefik.http.routers.my-app.tls.certresolver=letsencrypt" # Gebruik letsencrypt voor TLS-certificaten
          - "traefik.http.services.my-app.loadbalancer.server.port=5000" # Specificeer poort 5000
    
  • Om my-company.com te bedienen via uw container my-app op poort 5000 en alle verzoeken van www.my-company.com naar my-company.com te leiden, werkt u de sectie labels in hetzelfde bestand bij met:

        labels:
          - "traefik.enable=true"
          - "traefik.http.routers.my-app.rule=Host(`my-company.com`) || Host(`www.my-company.com`)" # Beide domeinen opnemen
          - "traefik.http.routers.my-app.tls.certresolver=letsencrypt"
          - "traefik.http.services.my-app.loadbalancer.server.port=5000" # Specificeer poort 5000
    
          # www.my-company.com omleiden naar 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"
    

Vergeet niet de DNS voor my-company.com en www.my-company.com te configureren zodat elk als een CNAME naar uw Docker-service wijst op https://<XXXXXX>.stackhero-network.com.