Tutorial Completo de Dockerfile
Tabla de Contenidos
¿Qué es un Dockerfile?
Un Dockerfile es un documento de texto que contiene todas las instrucciones necesarias para construir una imagen de Docker. Funciona como una receta que le dice a Docker cómo crear tu aplicación y empaquetarla en un contenedor.
Instrucciones más comunes
FROM
Indica la imagen base que se utilizará para construir la nueva imagen.
FROM nginx:alpine
FROM python:3.12RUN
Ejecuta comandos durante la construcción de la imagen.
RUN apt-get update
RUN pip install -r requirements.txtCOPY
Copia archivos o directorios desde tu computadora a la imagen.
COPY index.html /usr/share/nginx/html/
COPY . /appWORKDIR
Establece el directorio de trabajo para las instrucciones siguientes.
WORKDIR /appCMD
Define el comando por defecto que se ejecutará al iniciar el contenedor.
CMD ["nginx", "-g", "daemon off;"]ENTRYPOINT
Similar a CMD, pero no se puede sobrescribir fácilmente.
ENTRYPOINT ["python", "app.py"]Tutorial paso a paso
Paso 1: Crear el Dockerfile
Crea un archivo llamado Dockerfile (sin extensión):
touch DockerfileEdita el archivo con el siguiente contenido:
# Usar la imagen oficial de Nginx como base
FROM nginx:alpine
# Copiar el archivo HTML al directorio de Nginx
COPY index.html /usr/share/nginx/html/index.html
# Exponer el puerto 80
EXPOSE 80
# Comando para iniciar Nginx
CMD ["nginx", "-g", "daemon off;"]Paso 2: Crear el archivo HTML
Crea un archivo index.html en la misma carpeta:
<!DOCTYPE html>
<html>
<head>
<title>Mi Contenedor Web</title>
</head>
<body>
<h1>¡Hola desde Docker!</h1>
<p>Este es mi primer contenedor web.</p>
</body>
</html>Paso 3: Construir la imagen
Ejecuta el siguiente comando para construir la imagen:
docker build -t mi-contenedor-web .Explicación del comando:
docker build: Comando para construir imágenes-t mi-contenedor-web: Le da un nombre (tag) a la imagen.: Indica que el Dockerfile está en el directorio actual
Paso 4: Ejecutar el contenedor
Una vez construida la imagen, ejecuta el contenedor:
docker run -d -p 8080:80 --name mi-servidor-web mi-contenedor-webExplicación de las opciones:
-d: Ejecuta en segundo plano (detached mode)-p 8080:80: Mapea el puerto 8080 de tu máquina al puerto 80 del contenedor--name mi-servidor-web: Asigna un nombre al contenedor
Paso 5: Verificar el resultado
Abre tu navegador y visita:
http://localhost:8080¡Deberías ver tu página web funcionando!
Gestión de contenedores
Listar contenedores en ejecución
docker psListar todos los contenedores (incluyendo detenidos)
docker ps -aDetener un contenedor
docker stop mi-servidor-webIniciar un contenedor detenido
docker start mi-servidor-webEliminar un contenedor
docker rm mi-servidor-webAcceder a un contenedor en ejecución
# Si la imagen tiene bash
docker exec -it mi-servidor-web bash
# Si no tiene bash, usar sh
docker exec -it mi-servidor-web sh¿Para qué sirve acceder a un contenedor?
Depurar problemas
Verificar logs y configuraciones
Realizar tareas administrativas
Explorar el entorno del contenedor
Uso de diferentes archivos Dockerfile
Dockerfile para desarrollo
docker build -t mi-app-dev -f Dockerfile.dev .Dockerfile para producción
docker build -t mi-app-prod -f Dockerfile.prod .Ejemplo avanzado: Aplicación Python
Aquí tienes un ejemplo más completo para una aplicación Python:
# Imagen base de Python
FROM python:3.12
# Establecer directorio de trabajo
WORKDIR /usr/local/app
# Copiar e instalar dependencias
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
# Copiar código fuente
COPY src ./src
# Exponer puerto
EXPOSE 5000
# Crear usuario no-root por seguridad
RUN useradd app
USER app
# Comando para ejecutar la aplicación
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8080"]Flujo de trabajo típico
Desarrollo: Crear y probar el Dockerfile
Construcción:
docker build -t mi-app .Prueba:
docker run -p 8080:80 mi-appPublicación: Subir a Docker Hub o registro privado
Despliegue: Descargar y ejecutar en producción
Recursos adicionales
¡Ahora estás listo para crear tus propias imágenes de Docker!
Comentarios
Publicar un comentario