🐋
Apuntes Sistemas
  • ⚓Presentación
  • 📊Sistemas y Servidores
    • Personalizar el prompt de Windows
    • Utilidad de manejo de apps para Windows
    • PRACTICA: Arranque dual Windows y Ubuntu
    • 🚧SysLinuxOS: el SO para ASIX
    • Comandos Linux
      • PRACTICA - Ejercicio de práctica comandos
      • 🚧Instalación de paquetes
      • Apuntes Linux: blue/red team
      • Ejemplos de bash
      • Listado de comandos de Linux
    • Comandos Windows
      • 🚧Apuntes Powershell
      • Bucles FOR con batch
      • Scripts de práctica de Windows
    • Prácticas con Windows 10
    • Configuración de netplan
    • Terminal shell
      • SSH
      • 🚧Ghostty
      • 🚧Warp: la terminal inteligente
      • tmux: paneles de terminal
      • Tabby: Mejorar terminal
      • Conexión SSH en red NAT con VirtualBox
      • TheFuck!: Corrección de comandos
      • Wave: Mejorar terminal Linux
      • 🚧Registros de sesiones
    • Instalación manual de Wordpress en CDMON
    • 🏗️Proxmox
    • 🚧TrueNAS
    • Docker
      • Instalación de Docker
      • Dockerfiles
      • Volúmenes de docker
      • Deployment web con Docker con ejemplos
        • 🚧PRACTICA: Node.js con docker
      • Docker Compose
        • Ejemplo 1: Implantación de Wordpress
        • Ejemplo 2: Implementación de servidor con Nginx, Flask y mySQL
        • Ejemplo 3: Implantación de onlyoffice
        • 🚧Ejemplo 4: Passbolt
        • 🚧PRACTICA: Creando una web de emulación de juegos con docker-compose
      • Monitorización con Grafana en Docker
      • Pi-hole con docker
      • Actividad clase: Deployment app
      • Proyectos self-hosted de docker
    • 🚧Ansible
      • Configuración de laboratorio de ansible
    • 🚧Monitorización de servicios y redes
      • Servicios y cronjobs
      • 1Panel
      • 🚧WatchYourLAN
      • 🚧Uptime-kuma
      • 🚧Netdata
      • 🚧Prometheus + Grafana + Loki
    • LDAP
      • 🚧Gestión gráfica de LDAP
      • Carpetas compartidas NFS
      • PRACTICA: Infraestructura LDAP
  • 🗃️Servicios
    • 🚧Servidor hosting público
    • DHCP
      • DHCP con Ubuntu
      • 🦖DHCP & DNS script
      • DHCP con Alpine
        • Alpine - configuración de red
    • DNS
      • 😡Comprobación DNS
      • Script para enumeración DNS
      • DNS con ubuntu server
      • 🏗️DNSmasq
      • 🚧Securizar servidor DNS
    • Web
      • IIS con Windows server
      • Apache
        • Instalación de LAMP en Ubuntu
          • Prueba de servidor LAMP
          • 🚧Configuración de seguridad de Ubuntu
          • Creación de un VirtualHost en LAMP
          • Creación de varios VirtualHosts en LAMP
          • 🚧Instalación por script de LAMP
        • Aplicaciones con LAMP
          • Instalación de WP en entorno LAMP
          • 🚧Instalación de MantisBT en LAMP
            • 👷Guía de MantisBT
          • 🚧Instalación de QDPM con LAMP
      • Nginx
        • Virtualhosts
        • Instalando Wordpress en nginx
      • 👷MEAN stack
      • 👷‍♂️Caddy
      • 🚧Plesk
      • 🚧Ajenti -Web interface
    • 🏗️Proxy
      • Nginx como proxy inverso y balanceador
      • 🚧Zoraxy
    • Mailing
      • 🚧Servidor Mail con cloudfare
      • 🚧Reenvío de correos de root
      • 🚧Roundcube como MUA
      • Comprobación ESMTP
      • 🚧Seguridad en mailing
      • 🚧Mailhog
    • 🏗️File transfer
      • 🚧FTP
      • Git
    • Sistemas de comunicación instantánea
      • Comunicación mediante CLI
      • Ejabberd - XMPP
        • 🚧Ejabberd con docker
      • 🚧Openfire - XMPP
      • 🚧Comunicaciones servidor-móvil
    • 🏗️Multimedia services
      • Stremio
      • Ver anime por CLI
      • Jellyfin
      • 🚧HLS sobre Apache
      • 🚧Servicio autohospedado de videoconferencia
      • 🚧Morphos: Conversor docs
      • 🚧Reproductores de música en CLI
      • 🚧Icecast - música en streaming
      • 🚧RTMP-HLS server
      • 🚧Guacamole
  • 🖱️Hardware
    • 🚧Identificando conectores
    • Curso de electrónica analógica
    • Alcanzar los 3200MHz con la RAM
    • Calculadora de cuellos de botella
    • 🚧PXE: Bootear sistemas en red
    • 🚧PRÁCTICA - Clonación de disco con Clonezilla
    • Logitech iFixit
  • 🕸️Redes
    • Apuntes IPv4 Alina
    • ¿Cómo diferenciar tantos elementos de red?
    • 🚧IPv6
    • PRÁCTICA - Subneteo con IPcalc en Linux
    • PRÁCTICA - Comandos de red en Windows
    • 🚧PRÁCTICA - Comandos de red en Linux
    • Herramientas de red
      • 🚧TCPDump: analizado de paquetes en red
      • PRÁCTICA - Netsh
      • 🚧PRÁCTICA - mtr.ping.pe
      • 🚧Netcat
    • Wireshark
    • VPN y escritorio remoto
      • Comunicación punto a punto con ngrok
      • 🚧VPN
    • Escaneo de red
      • PRÁCTICA - Mapeado de red con Draw.io
      • 🚧PRÁCTICA - Nmap/Zenmap
    • Redes inalámbricas
      • Wi-fi
        • 🚧PRÁCTICA - Configuración de router
        • 🚧PRÁCTICA - Como hacer un Wifi Heatmap
        • 🚧Seguridad de redes inalámbricas
        • PRÁCTICA - Crackear la contraseña del Wifi con WPA/WPA2
    • PRÁCTICA - Usar SSH en Cisco packet tracer
  • 🛑Ciberseguridad
    • 🚧Securizando un servidor Linux
      • Protégete de ataques de fuerza bruta con Fail2ban
      • Firewall
        • UFW (uncomplicated firewall)
          • GUFW - Interfaz gráfica de ufw
        • 🚧IPTables
        • 🚧PFsense
          • 🚧DMZ con PFsense
      • 🚧Passbolt: gestor de contraseñas autohospedado
      • 🚧Hashes y encriptación
      • 🚧Certificados SSL/TLS
      • Copias de seguridad
    • 🚧Alerta de escaneo de puertos
    • 🚧Google dorks
    • 🚧Enumeración DNS
    • Comandos destructivos de linux
    • Webs enseñanza cyber
    • Wireless Pentesting CheatSheet Github
    • The password game!
    • Personal Security Checklist
  • 🔌Arduino
    • Termómetro e higrómetros digitales y online con Arduino
    • Construyendo un coche multipropósito
      • Multi
      • Montaje del auto
    • Arduino con Sigfox para IoT
    • 10 proyectos de Arduino
  • 📚Recursos y libros
    • Media library: libros varios
    • Herramientas básicas de sysadmin
  • 🌍Sostenibilidad y digitalización
    • Portfolio curso digitalización MOOC
    • 🚧Explotación de recursos por IA
    • 🚧Nuevas tecnologias y comunicaciones
    • 🚧Enlaces sobre Inteligencia artificial
Con tecnología de GitBook
En esta página
  • [2p] Web app
  • [2p] Repositorios con git
  • [3p] Crear la imagen y subirla al Hub
  • [3p] Docker compose
  1. Sistemas y Servidores
  2. Docker

Actividad clase: Deployment app

AnteriorPi-hole con dockerSiguienteAnsible

Última actualización hace 3 meses

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

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:

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:

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"

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;"]
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

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: {}
docker-compose up -d

Antes de desesperaros revisad bien que las imágenes funcionen, yo te proporciono unos mínimos pero dependiendo de tu aplicación (sobre todo) debereis adaptaros a las circunstancias.

[2p] Web app

[2p] Repositorios con git

Instala git en el servidor, tienes más info sobre comandos y funcionamiento .

Crea un repositorio público en .

[3p] Crear la imagen y subirla al Hub

Crea un repositorio público en , llámalo como tu quieras y quédate con el nombre.

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

[3p] Docker compose

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

🖱️
🎋
🐳
🐙
aquí
Github
Docker hub
documentación oficial
aquí
📊
Page cover image
Docker architecture