Creación de Entornos de Desarrollo con Docker
Creación de un Dockerfile
Un Dockerfile es un archivo de texto que contiene todos los comandos necesarios para construir una imagen Docker. Aquí hay un ejemplo de Dockerfile para una sencilla aplicación web Python:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "app.py"]
Este Dockerfile:
- Parte de la imagen base
python:3.9-slim.
- Establece el directorio de trabajo en
/app.
- Copia el archivo
requirements.txt al directorio de trabajo.
- Instala las dependencias Python listadas en
requirements.txt.
- Copia el código de la aplicación al directorio de trabajo.
- Especifica el comando para ejecutar la aplicación (
python app.py).
Construcción de una Imagen Docker
Para construir una imagen Docker a partir del Dockerfile, ejecuta el siguiente comando en el mismo directorio que el Dockerfile:
docker build -t my-python-app .
Esto construirá una imagen Docker con la etiqueta my-python-app.
Ejecución de un Contenedor Docker
Para ejecutar un contenedor Docker a partir de la imagen my-python-app, utiliza el siguiente comando:
docker run -p 8080:8080 my-python-app
Esto iniciará un nuevo contenedor y mapeará el puerto 8080 del host al puerto 8080 dentro del contenedor.
Desarrollo con Docker Compose
Docker Compose es una herramienta para definir y ejecutar aplicaciones Docker multicontenedor. Aquí hay un ejemplo de archivo docker-compose.yml para una sencilla aplicación web con una base de datos:
version: "3"
services:
web:
build: .
ports:
- 8080:8080
depends_on:
- db
db:
image: postgres:13
environment:
POSTGRES_DB: myapp
POSTGRES_USER: myapp
POSTGRES_PASSWORD: secret
volumes:
- db-data:/var/lib/postgresql/data
volumes:
db-data:
Este archivo docker-compose.yml define dos servicios: web y db. El servicio web construye una imagen Docker desde el directorio actual y mapea el puerto 8080 del host al puerto 8080 dentro del contenedor. El servicio db utiliza la imagen oficial de PostgreSQL y configura una base de datos para la aplicación.
Para iniciar la aplicación, ejecuta:
docker-compose up -d
Esto iniciará los contenedores web y db en segundo plano.