Docker: Platforma produkcyjna

Ta dokumentacja jest częścią przewodnika Node.js. Pełny przewodnik znajdziesz tutaj: Jak używać i wdrażać aplikację Node.js z Dockerem.

👋 Witamy w dokumentacji Stackhero!

Stackhero oferuje gotowe do użycia rozwiązanie Docker cloud CaaS (Containers as a Service), które zapewnia wiele korzyści, w tym:

  • Łatwe wdrażanie kontenerów do produkcji za pomocą prostego docker-compose up.
  • Dostosowywana nazwa domeny zabezpieczona HTTPS (na przykład, https://api.twoja-firma.com, https://www.twoja-firma.com, https://backoffice.twoja-firma.com).
  • Optymalna wydajność i solidne zabezpieczenia dzięki prywatnej i dedykowanej VM.
  • Bezproblemowe aktualizacje za pomocą jednego kliknięcia.

Oszczędzaj czas i upraszczaj swoje życie: wystarczy 5 minut, aby wypróbować rozwiązanie Docker CaaS cloud hosting Stackhero i wdrożyć swoje kontenery do produkcji!

Jeśli nie masz jeszcze usługi Stackhero for Docker, możesz ją łatwo utworzyć z poziomu swojego dashboardu Stackhero. Zostanie aktywowana w ciągu około 2 minut.

Jeśli jesteś nowy w Stackhero, możesz wypróbować Docker container cloud hosting za darmo przez miesiąc.

Przed wdrożeniem aplikacji do produkcji musisz przygotować kilka plików konfiguracyjnych:

  1. Skopiuj secrets/global.production.example do secrets/global.production.
  2. Edytuj secrets/global.production i zamień <XXXXXX>.stackhero-network.com na nazwę hosta swojej usługi Docker z dashboardu Stackhero.
  3. Skopiuj secrets/my-app.production.example do secrets/my-app.production.
  4. Edytuj secrets/my-app.production i wprowadź swoje dane uwierzytelniające.
  5. Zaktualizuj docker/docker-compose.production.yml, zastępując <XXXXXX>.stackhero-network.com nazwą hosta swojej usługi Docker.

Wdrożenie do produkcji jest proste: uruchom:

make production-deploy

Ta komenda tworzy kontener Dockera, przesyła dane Twojego projektu i wysyła je do Twojej usługi Docker w produkcji. Otwórz przeglądarkę i przejdź do nazwy hosta swojej usługi Docker (na przykład, https://<XXXXXX>.stackhero-network.com). Powinieneś zobaczyć, jak Twoje API REST odpowiada "Hello World".

Możesz również użyć make production, który wdraża Twoje kontenery i wyświetla logi w czasie rzeczywistym.

Aby monitorować swoje środowisko produkcyjne lub rozwiązywać problemy, możesz przeglądać swoje logi za pomocą tych komend:

  • Aby strumieniować logi na żywo, uruchom: make production-logs-live
  • Aby pobrać wszystkie zapisane logi, uruchom: make production-logs
  • Aby pobrać logi z konkretnego dnia (zamień YYYY-MM-DD na żądaną datę), uruchom: make production-logs | grep "YYYY-MM-DD"

Jeśli chcesz użyć innej nazwy domeny zamiast https://<XXXXXX>.stackhero-network.com, Stackhero for Docker integruje Traefik, aby uprościć zarządzanie domenami. Traefik obsługuje routing HTTP i szyfrowanie TLS (HTTPS) za Ciebie.

Oto kilka przykładów, jak dostosować swoje nazwy domen:

  • Aby obsługiwać api.my-company.com za pośrednictwem swojego kontenera my-app na porcie 5000 z szyfrowaniem TLS, zaktualizuj plik docker/docker-compose.production.yml, zastępując sekcję labels następującymi wartościami:

        labels:
          - "traefik.enable=true" # Włącz Traefik, aby kierować ruch do tego kontenera
          - "traefik.http.routers.my-app.rule=Host(`api.my-company.com`)" # Zdefiniuj hosta
          - "traefik.http.routers.my-app.tls.certresolver=letsencrypt" # Użyj letsencrypt dla certyfikatów TLS
          - "traefik.http.services.my-app.loadbalancer.server.port=5000" # Określ port 5000
    
  • Aby obsługiwać my-company.com za pośrednictwem swojego kontenera my-app na porcie 5000 i przekierować wszystkie żądania z www.my-company.com do my-company.com, zaktualizuj sekcję labels w tym samym pliku następującymi wartościami:

        labels:
          - "traefik.enable=true"
          - "traefik.http.routers.my-app.rule=Host(`my-company.com`) || Host(`www.my-company.com`)" # Uwzględnij oba domeny
          - "traefik.http.routers.my-app.tls.certresolver=letsencrypt"
          - "traefik.http.services.my-app.loadbalancer.server.port=5000" # Określ port 5000
    
          # Przekieruj www.my-company.com do 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"
    

Nie zapomnij skonfigurować DNS dla my-company.com i www.my-company.com, aby każdy wskazywał jako CNAME na Twoją usługę Docker pod adresem https://<XXXXXX>.stackhero-network.com.