Proyecto Docker
Aquí tenemos un ejemplo de un proyecto sencillo donde trabajaremos con Docker y un script de Bash. Este proyecto consiste en crear un contenedor que ejecute un servidor web Nginx y un script de Bash que automatice las tareas relacionadas con la construcción, ejecución y limpieza del contenedor.
Estructura del proyecto
1
2
3
4
5
mi-proyecto-docker/
├── Dockerfile
├── index.html
├── script.sh
└── README.md
1. Archivo Dockerfile
Este archivo define la imagen personalizada que usaremos para el servidor web Nginx.
1
2
3
4
5
6
7
8
9
10
11
# Usamos la imagen base de Nginx
FROM nginx:latest
# Copiamos el archivo HTML al directorio de Nginx
COPY index.html /usr/share/nginx/html/
# Exponemos el puerto 80
EXPOSE 80
# Comando por defecto para ejecutar Nginx
CMD ["nginx", "-g", "daemon off;"]
2. Archivo index.html
Este archivo es el contenido que servirá el servidor web.
1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Servidor Nginx con Docker</title>
</head>
<body>
<h1>¡Hola, mundo desde Docker!</h1>
<p>Este es un servidor web Nginx ejecutado en un contenedor Docker.</p>
</body>
</html>
3. Script de Bash (script.sh)
Este script automatiza las tareas comunes: construir la imagen, ejecutar el contenedor, detenerlo y limpiarlo.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/bin/bash
# Nombre de la imagen y el contenedor
IMAGE_NAME="mi-nginx"
CONTAINER_NAME="mi-nginx-container"
# Función para construir la imagen
build_image() {
echo "Construyendo la imagen Docker..."
docker build -t $IMAGE_NAME .
echo "Imagen construida: $IMAGE_NAME"
}
# Función para ejecutar el contenedor
run_container() {
echo "Ejecutando el contenedor..."
docker run -d --name $CONTAINER_NAME -p 8080:80 $IMAGE_NAME
echo "Contenedor ejecutándose en http://localhost:8080"
}
# Función para detener el contenedor
stop_container() {
echo "Deteniendo el contenedor..."
docker stop $CONTAINER_NAME
docker rm $CONTAINER_NAME
echo "Contenedor detenido y eliminado."
}
# Función para limpiar la imagen
clean_image() {
echo "Eliminando la imagen Docker..."
docker rmi $IMAGE_NAME
echo "Imagen eliminada: $IMAGE_NAME"
}
# Menú de opciones
echo "Seleccione una opción:"
echo "1. Construir la imagen"
echo "2. Ejecutar el contenedor"
echo "3. Detener el contenedor"
echo "4. Limpiar la imagen"
echo "5. Salir"
read -p "Opción: " OPTION
case $OPTION in
1)
build_image
;;
2)
run_container
;;
3)
stop_container
;;
4)
clean_image
;;
5)
echo "Saliendo..."
;;
*)
echo "Opción no válida."
;;
esac
4. Archivo README.md
Este archivo explica cómo usar el proyecto.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# Proyecto Docker con Bash Script
Este proyecto crea un servidor web Nginx utilizando Docker y automatiza las tareas comunes con un script de Bash.
## Requisitos
- Docker instalado
- Bash (Linux o WSL en Windows)
## Estructura del proyecto
- `Dockerfile`: Define la imagen personalizada de Nginx.
- `index.html`: Archivo HTML que se servirá desde el servidor.
- `script.sh`: Script de Bash para automatizar tareas.
- `README.md`: Documentación del proyecto.
## Uso
1. **Clonar el repositorio**:
```bash
git clone <url-del-repositorio>
cd mi-proyecto-docker
- Dar permisos de ejecución al script:
1
chmod +x script.sh - Ejecutar el script:
1
./script.sh
- Seleccionar una opción:
1: Construir la imagen Docker.2: Ejecutar el contenedor.3: Detener y eliminar el contenedor.4: Limpiar la imagen Docker.5: Salir.
- Acceder al servidor web:
Una vez que el contenedor esté en ejecución, abre tu navegador y ve a:
1
http://localhost:8080
Notas
- Asegúrate de que el puerto
8080esté libre en tu máquina. - Puedes personalizar el archivo
index.htmlpara cambiar el contenido del servidor web. ```
Cómo usar el proyecto
- Crea los archivos mencionados en la estructura del proyecto.
- Da permisos de ejecución al script de Bash:
1
chmod +x script.sh - Ejecuta el script:
1
./script.sh
- Sigue las instrucciones del menú para construir la imagen, ejecutar el contenedor, detenerlo o limpiarlo.
Este proyecto es un ejemplo básico, pero puedes ampliarlo para incluir más funcionalidades, como manejar múltiples servicios, usar variables de entorno o integrar herramientas de monitoreo. ¡Si necesitas ayuda con algo más, no dudes en preguntar!
