Vamos a realizar el proceso completo de publicación de una aplicación web, utilizaremos un servidor Linux en la nube (VPS) "tradicional", pero realizando el despliegue mediante contenedores Docker, en particular usando docker-compose, aunque hablaremos de alternativas como Kubernetes y cuándo elegir una u otra.
El objetivo es mostrar lo sencillo y rápido que puede ser publicar una aplicación web desarrollada en cualquier tecnología así como montar un sistema básico de CI (Continuous Integration) con despliegue semi-automático, todo ello utilizando un presupuesto muy ajustado. Como resultado final podremos acceder a la aplicación mediante url pública y https://.
2. Bienvenido
Index
1. ¿Qué es “la nube”?
2. Requisitos para publicar tu aplicación
3. Opciones de despliegue
4. Proceso de CI/CD
5. GitLab CI
6. Ejercicio práctico
6. Qué necesitas para publicar tu aplicación
Un repositorio de código (en la nube*)
Un sistema de CI (*)
Un registro de imágenes docker en la
nube
Un servidor donde desplegar
Un dominio
(*) Si se desea automatizar el proceso
10. Building en local con docker
Dockerfile multi-stage
docker build -t h3lp3r-back -t qualityobjects/h3lp3r-
back --rm -f ./Dockerfile.complete .
Subir imagen a DockerHub
docker login -u qualityobjects
docker push qualityobjects/h3lp3r-back
11. Building con servicio de CI/CD
Proceso CI automático
• Lanzamiento vía evento (git push) o bajo
demanda
• Ejecución en “pipeline” (script con fases)
• Validación estática de código (SonarQube)
• Pruebas unitarias
• Generación de artefactos
• Generación de imágenes (Docker)
• Pruebas e2e (entorno test)
• Despliegue
13. Qué ofrece GitLab
Repositorios de código GIT (públicos y
privados)
Un sistema de CI
Registro de artefactos e imágenes docker
Gestión básica de proyectos
https://gitlab.com/
17. Qué vamos a utilizar
GitLab como repositorio GIT y sistema CI
DockerHub como repositorio de imágenes docker
Un servidor VPS básico.
(1 vCPU / 2 Gb RAM / 20GB disco)
Dominio meetup2.qodev.es
18. Prepararemos imágenes Docker con la
versión de la aplicación a publicar
Ejercicio
Configuraremos el servidor desde cero, para
poder desplegar la aplicación
Modificaremos el código de la aplicación para
ver el proceso de actualización de la
aplicación desplegada
19. Recursos
Repositorios GIT de la app
https://gitlab.com/qo-oss/h3lp3r
Repositorio Docker con imágenes de la app
https://hub.docker.com/u/qualityobjects
Configuración del servidor
https://gitlab.com/qo-oss/h3lp3r/h3lp3r-back/-
/tree/master/etc/meetup/la_nube_tu_aplicacion_y_tu
Pipelines
https://gitlab.com/qo-oss/h3lp3r/h3lp3r-back/-
/blob/master/.gitlab-ci.yml
https://gitlab.com/qo-oss/h3lp3r/h3lp3r-front/-
/blob/master/.gitlab-ci.yml