Docker: Piattaforma di produzione
Questa documentazione fa parte della guida Node.js. Consulta la guida completa qui: Come utilizzare e distribuire un'app Node.js con Docker.
👋 Benvenuti nella documentazione di Stackhero!
Stackhero offre una soluzione Docker cloud CaaS (Containers as a Service) pronta all'uso che fornisce numerosi vantaggi, tra cui:
- Distribuisci facilmente i tuoi container in produzione con un semplice
docker-compose up.- Nome di dominio personalizzabile protetto con HTTPS (ad esempio, https://api.tua-azienda.com, https://www.tua-azienda.com, https://backoffice.tua-azienda.com).
- Prestazioni ottimali e sicurezza robusta grazie a una VM privata e dedicata.
- Aggiornamenti senza sforzo con un solo clic.
Risparmia tempo e semplifica la tua vita: bastano 5 minuti per provare la soluzione di hosting cloud Docker CaaS di Stackhero e distribuire i tuoi container in produzione!
Se non hai ancora un servizio Stackhero for Docker, puoi crearne uno facilmente dal tuo dashboard Stackhero. Sarà attivato in circa 2 minuti.
Se sei nuovo su Stackhero, puoi provare l'hosting cloud di container Docker gratuitamente per un mese.
Preparare il primo deploy in produzione
Prima di distribuire la tua app in produzione, devi preparare alcuni file di configurazione:
- Copia
secrets/global.production.exampleinsecrets/global.production. - Modifica
secrets/global.productione sostituisci<XXXXXX>.stackhero-network.comcon il nome host del tuo servizio Docker dal tuo dashboard Stackhero. - Copia
secrets/my-app.production.exampleinsecrets/my-app.production. - Modifica
secrets/my-app.productione inserisci le tue credenziali. - Aggiorna
docker/docker-compose.production.ymlsostituendo<XXXXXX>.stackhero-network.comcon il nome host del tuo servizio Docker.
Distribuire in produzione
Distribuire in produzione è semplice: esegui:
make production-deploy
Questo comando crea un container Docker, trasferisce i dati del tuo progetto e li invia al tuo servizio Docker in produzione. Apri il tuo browser e naviga verso il nome host del tuo servizio Docker (ad esempio, https://<XXXXXX>.stackhero-network.com). Dovresti vedere la tua API REST rispondere "Hello World".
Puoi anche usare
make production, che distribuisce i tuoi container e mostra i log in tempo reale.
Visualizzare i log
Per monitorare il tuo ambiente di produzione o risolvere problemi, puoi visualizzare i tuoi log usando questi comandi:
- Per trasmettere i log in diretta, esegui:
make production-logs-live - Per recuperare tutti i log memorizzati, esegui:
make production-logs - Per recuperare i log di un giorno specifico (sostituisci
YYYY-MM-DDcon la data desiderata), esegui:make production-logs | grep "YYYY-MM-DD"
Personalizzare i nomi di dominio
Se desideri utilizzare un nome di dominio diverso da https://<XXXXXX>.stackhero-network.com, Stackhero for Docker integra Traefik per semplificare la gestione dei domini. Traefik gestisce il routing HTTP e la crittografia TLS (HTTPS) per te.
Ecco alcuni esempi per personalizzare i tuoi nomi di dominio:
-
Per servire
api.my-company.comtramite il tuo containermy-appsulla porta 5000 con crittografia TLS, aggiorna il filedocker/docker-compose.production.ymlsostituendo la sezionelabelscon:labels: - "traefik.enable=true" # Abilita Traefik per instradare il traffico verso questo container - "traefik.http.routers.my-app.rule=Host(`api.my-company.com`)" # Definisci l'host - "traefik.http.routers.my-app.tls.certresolver=letsencrypt" # Usa letsencrypt per i certificati TLS - "traefik.http.services.my-app.loadbalancer.server.port=5000" # Specifica la porta 5000 -
Per servire
my-company.comtramite il tuo containermy-appsulla porta 5000 e reindirizzare tutte le richieste dawww.my-company.comamy-company.com, aggiorna la sezionelabelsnello stesso file con:labels: - "traefik.enable=true" - "traefik.http.routers.my-app.rule=Host(`my-company.com`) || Host(`www.my-company.com`)" # Includi entrambi i domini - "traefik.http.routers.my-app.tls.certresolver=letsencrypt" - "traefik.http.services.my-app.loadbalancer.server.port=5000" # Specifica la porta 5000 # Reindirizza www.my-company.com a 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"
Non dimenticare di configurare il DNS per
my-company.comewww.my-company.comin modo che ciascuno punti come CNAME al tuo servizio Docker suhttps://<XXXXXX>.stackhero-network.com.