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 documentatie van Stackhero!

Stackhero biedt een kant-en-klare Docker cloud CaaS (Containers as a Service) oplossing die tal van voordelen biedt, waaronder:

  • Zet eenvoudig uw containers in productie met slechts een docker-compose up.
  • Aanpasbare domeinnaam beveiligd met HTTPS (bijvoorbeeld, https://api.uw-bedrijf.com, https://www.uw-bedrijf.com, https://backoffice.uw-bedrijf.com).
  • Optimale prestaties en robuuste beveiliging aangedreven door een privé en toegewijde VM.
  • Moeiteloze updates met slechts één klik.

Bespaar tijd en vereenvoudig uw leven: het kost slechts 5 minuten om de Docker CaaS cloud hosting oplossing van Stackhero te proberen en uw containers in productie te zetten!

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.