Docker: Plataforma de producción
Esta documentación forma parte de la guía Node.js. Consulte la guía completa aquí: Cómo usar y desplegar una aplicación Node.js con Docker.
Bienvenido a la documentación de Stackhero
Stackhero ofrece una plataforma Docker cloud CaaS (Containers as a Service) lista para usar, diseñada para despliegues de contenedores rápidos y fiables:
- Despliegue en producción con un simple
docker-compose up. No necesita configuración adicional: simplemente inicie sus contenedores.- Elija su propio nombre de dominio, asegurado automáticamente con HTTPS (por ejemplo: https://api.su-empresa.com, https://www.su-empresa.com o https://backoffice.su-empresa.com).
- Disfrute de un alto rendimiento y una seguridad robusta sobre infraestructura privada y dedicada.
- Aplique actualizaciones con un solo clic para un mantenimiento sencillo y sin complicaciones.
Puede tener sus contenedores en producción en unos cinco minutos. Stackhero gestiona la infraestructura, las actualizaciones y la seguridad por usted, para que pueda centrarse en el desarrollo de sus aplicaciones. Lea más sobre el alojamiento cloud Docker CaaS.
Si aún no tiene un servicio Stackhero for Docker, puede crear uno fácilmente desde su panel de Stackhero. Se activará en aproximadamente 2 minutos.
Si es nuevo en Stackhero, puede probar el alojamiento en la nube de contenedores Docker gratis durante un mes.
Preparar su primer despliegue en producción
Antes de desplegar su aplicación en producción, necesita preparar algunos archivos de configuración:
- Copie
secrets/global.production.exampleasecrets/global.production. - Edite
secrets/global.productiony reemplace<XXXXXX>.stackhero-network.comcon el nombre de host de su servicio Docker desde su panel de Stackhero. - Copie
secrets/my-app.production.exampleasecrets/my-app.production. - Edite
secrets/my-app.productione inserte sus credenciales. - Actualice
docker/docker-compose.production.ymlreemplazando<XXXXXX>.stackhero-network.comcon el nombre de host de su servicio Docker.
Desplegar en producción
Desplegar en producción es sencillo: ejecute:
make production-deploy
Este comando crea un contenedor Docker, transfiere los datos de su proyecto y los envía a su servicio Docker en producción. Abra su navegador y navegue al nombre de host de su servicio Docker (por ejemplo, https://<XXXXXX>.stackhero-network.com). Debería ver su API REST responder "Hello World".
También puede usar
make production, que despliega sus contenedores y muestra logs en tiempo real.
Mostrar logs
Para monitorear su entorno de producción o solucionar problemas, puede ver sus logs usando estos comandos:
- Para transmitir logs en vivo, ejecute:
make production-logs-live - Para recuperar todos los logs almacenados, ejecute:
make production-logs - Para recuperar logs de un día específico (reemplace
YYYY-MM-DDcon la fecha deseada), ejecute:make production-logs | grep "YYYY-MM-DD"
Personalizar nombres de dominio
Si desea usar un nombre de dominio diferente a https://<XXXXXX>.stackhero-network.com, Stackhero for Docker integra Traefik para simplificar la gestión de dominios. Traefik maneja el enrutamiento HTTP y el cifrado TLS (HTTPS) por usted.
Aquí hay un par de ejemplos para personalizar sus nombres de dominio:
-
Para servir
api.my-company.coma través de su contenedormy-appen el puerto 5000 con cifrado TLS, actualice el archivodocker/docker-compose.production.ymlreemplazando la secciónlabelscon:labels: - "traefik.enable=true" # Habilitar Traefik para enrutar el tráfico a este contenedor - "traefik.http.routers.my-app.rule=Host(`api.my-company.com`)" # Definir el host - "traefik.http.routers.my-app.tls.certresolver=letsencrypt" # Usar letsencrypt para certificados TLS - "traefik.http.services.my-app.loadbalancer.server.port=5000" # Especificar el puerto 5000 -
Para servir
my-company.coma través de su contenedormy-appen el puerto 5000 y redirigir todas las solicitudes dewww.my-company.comamy-company.com, actualice la secciónlabelsen el mismo archivo con:labels: - "traefik.enable=true" - "traefik.http.routers.my-app.rule=Host(`my-company.com`) || Host(`www.my-company.com`)" # Incluir ambos dominios - "traefik.http.routers.my-app.tls.certresolver=letsencrypt" - "traefik.http.services.my-app.loadbalancer.server.port=5000" # Especificar el puerto 5000 # Redirigir 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"
No olvide configurar el DNS para
my-company.comywww.my-company.compara que cada uno apunte como un CNAME a su servicio Docker enhttps://<XXXXXX>.stackhero-network.com.