Title: Ejecución de contenedores simples
Course: 2025 - LISI - Virtualizacion 2-2 > Section: Contenedores y Docker

🧩 Actividad Práctica: Ejecución de Contenedores Simples

🎯 Objetivo

Configurar y ejecutar un entorno de contenedores que incluya:

- Servidor web Apache
- Servidor SFTP con dos usuarios
- Servidor MySQL con dos usuarios (root y uno con acceso limitado)
- phpMyAdmin para administración de bases de datos
- Todo sobre Debian 13 como sistema base

📦 Entregable

Un video subido a YouTube donde el alumno muestre:

- La instalación y configuración de los servicios
- La ejecución de los contenedores
- La verificación del funcionamiento de cada servicio

🛠️ Requisitos Previos

- Sistema operativo base: Debian 13
- Docker y Docker Compose instalados
- Editor de texto (Visual Studio Code, nano, etc.)

📁 Estructura de Archivos del Proyecto

contenedores_simples/
│
├── docker-compose.yml
├── apache/
│   └── Dockerfile
├── sftp/
│   ├── Dockerfile
│   └── users.conf
├── mysql/
│   └── init.sql
└── .env


🧪 Pasos para la Instalación y Configuración

1️⃣ Instalación de Docker y Docker Compose en Debian 13

sudo apt update

sudo apt install docker.io docker-compose -y

sudo systemctl enable docker

sudo systemctl start docker

2️⃣ Archivo .env

Define variables reutilizables:

MYSQL_ROOT_PASSWORD=rootpass

MYSQL_USER=usuario1

MYSQL_PASSWORD=usuario1pass

MYSQL_DATABASE=bd_usuario1

SFTP_USER1=alumno1

SFTP_PASS1=clave1

SFTP_USER2=alumno2

SFTP_PASS2=clave2

3️⃣ Dockerfile para Apache

📁 apache/Dockerfile

FROM debian:13

RUN apt update && apt install apache2 -y

EXPOSE 80

CMD ["apachectl", "-D", "FOREGROUND"]

4️⃣ Dockerfile para SFTP

📁 sftp/Dockerfile

FROM atmoz/sftp

📁 sftp/users.conf

alumno1:clave1:::upload

alumno2:clave2:::upload

5️⃣ Inicialización de MySQL

📁 mysql/init.sql

CREATE DATABASE IF NOT EXISTS bd_usuario1;

CREATE USER 'usuario1'@'%' IDENTIFIED BY 'usuario1pass';

GRANT ALL PRIVILEGES ON bd_usuario1.* TO 'usuario1'@'%';

FLUSH PRIVILEGES;

6️⃣ Archivo docker-compose.yml

version: '3.8'

services:

  apache:

    build: ./apache

    ports:

      - "8080:80"

  sftp:

    build: ./sftp

    ports:

      - "2222:22"

    volumes:

      - sftp_data:/home

    environment:

      - USERS=alumno1:clave1:::upload,alumno2:clave2:::upload

  mysql:

    image: mysql:8.0

    restart: always

    environment:

      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}

      MYSQL_DATABASE: ${MYSQL_DATABASE}

      MYSQL_USER: ${MYSQL_USER}

      MYSQL_PASSWORD: ${MYSQL_PASSWORD}

    volumes:

      - mysql_data:/var/lib/mysql

      - ./mysql/init.sql:/docker-entrypoint-initdb.d/init.sql

    ports:

      - "3306:3306"

  phpmyadmin:

    image: phpmyadmin/phpmyadmin

    restart: always

    ports:

      - "8081:80"

    environment:

      PMA_HOST: mysql

      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}

volumes:

  mysql_data:

  sftp_data:

✅ Verificación de Servicios

1. Apache: Accede a http://localhost:8080
2. SFTP: Conéctate con FileZilla a localhost puerto 2222 con los usuarios definidos
3. MySQL: Accede a http://localhost:8081 con usuario root o usuario1
4. phpMyAdmin: Verifica acceso a las bases de datos

📹 Entrega del Video

El alumno debe grabar un video mostrando:

- Instalación de Docker
- Creación de archivos
- Ejecución con docker-compose up
- Verificación de cada servicio
- Subir el video a YouTube y compartir el enlace en Moodle