Page cover

Actividad clase: Deployment app

Prepara una maquina virtual servidor con docker (puedes usar una ya hecha) en un entorno virtual de una máquina host.

Docker architecture

Para esta práctica te recomiendo un Ubuntu Server conectado a otro ordenador host de tipo cliente.

A continuación te he preparado los pasos para realizar la práctica:

[2p] Web app 🖱️

Para estos dos puntos revisaré que funcione la web correctamente con sus funcionalidades.

La apliación web es la vuestra propia del primer proyecto, en caso de no tener proyectos, usa la que te proporciono.

-> La aplicación web escogida es una de asistencia escolar con un diseño algo feo, habrá que darle algo de color:

[2p] Repositorios con git 🎋

Primeramente nos toca aprender sobre git bash y su funcionamiento. Vamos ( de forma un poco redundante) a crear un repositorio y subir archivos por comandos:

git clone "https://tu-repositorio-de-github"

[3p] Crear la imagen y subirla al Hub 🐳

Vamos a crear una imagen de docker y subirla al repositorio oficial de docker para tener un historial de versiones y poder usarla en cualquier momento:

# Usamos la imagen oficial de Nginx como base
FROM nginx

# Copiamos el archivo principal de HTML al directorio de contenido estático de Nginx
COPY index.html /usr/share/nginx/html

# Puerto en el que Nginx escuchará
EXPOSE XX

# Comando para iniciar Nginx en primer plano
CMD ["nginx", "-g", "daemon off;"]

Tienes más información sobre la semántica del dockerfile en la documentación oficial, quizás tengas que añadir algúna linea más así que revisad!

docker build -t mi-web-dockerizada .
docker run -d -p 8080:XX mi-web-dockerizada
docker login
docker tag mi-web-dockerizada:v1 nombrerepositorio/mi-web-dockerizada:v1
docker push nombrerepositorio/mi-web-dockerizada:v1

[3p] Docker compose 🐙

Docker compose nos permitirá ejecutar varios contenedores a la vez y conectados entre si:

sudo apt install docker-compose
docker-compose.yaml
version: '3.8'

services:
#Primer servicio, usa la imagen de mariadb
  mariadb:
    image: XXXXXXXXX
    restart: always
    #Variables de entorno de la imagen de MariaDB, la base de datos por defecto de la app es la que hay puesta:
    environment:
      MYSQL_ROOT_PASSWORD: root_password_here
      MYSQL_DATABASE: simple_attendance_db
      MYSQL_USER: my_user
      MYSQL_PASSWORD: my_password
    #Volúmenes docker
    volumes:
      #Base de datos en un docker volume (para evitar reinicios)
      - mariadb_data:/var/lib/mysql
      # Ruta-bakcup-base-datos:ruta-del-contenedor, modifica esto!
      - ./backup.sql:/docker-entrypoint-initdb.d/backup.sql
    
    web:
      #Imagen que acabamos de subir
      image: nombrerepositorio/mi-web-dockerizada:v1
      restart: always
      #Redireccion de puertos
      ports:
      - "8080:XX"

#Volumenes
volumes:
    db_data: {}

Hemos usado dos imágenes, la de MariaDB (más info aquí) pero puedes usar la de mysql si te da muchos problemas y la propia creada.

docker-compose up -d

Última actualización