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 solución Docker cloud CaaS (Containers as a Service) lista para usar que proporciona una serie de beneficios, incluyendo:
- Despliega fácilmente tus contenedores en producción con solo un
docker-compose up.- Nombre de dominio personalizable asegurado con HTTPS (por ejemplo, https://api.tu-empresa.com, https://www.tu-empresa.com, https://backoffice.tu-empresa.com).
- Rendimiento óptimo y seguridad robusta gracias a una VM privada y dedicada.
- Actualizaciones sin esfuerzo con solo un clic.
Ahorra tiempo y simplifica tu vida: ¡solo toma 5 minutos probar la solución de alojamiento en la nube Docker CaaS de Stackhero y desplegar tus contenedores en producción!
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.