Preparar un proyecto simple de Docker Compose
En este paso, prepararemos un proyecto simple de Docker Compose. Como Docker Compose no viene preinstalado en el entorno de LabEx, primero lo instalaremos. Luego, crearemos una aplicación web sencilla y un archivo de Docker Compose para definirla y ejecutarla.
Primero, instalemos Docker Compose. Descargaremos el binario de Docker Compose y lo haremos ejecutable.
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Ahora, verifiquemos la instalación comprobando la versión de Docker Compose.
docker-compose --version
Deberías ver la versión instalada de Docker Compose en la salida.
A continuación, crearemos una aplicación web simple. Usaremos una aplicación básica de Python Flask. Crea un directorio para nuestro proyecto y accede a él.
mkdir my-web-app
cd my-web-app
Dentro del directorio my-web-app
, crea un archivo llamado app.py
con el siguiente contenido:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, Docker Compose!'
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')
Esta es una aplicación simple de Flask que devuelve "Hello, Docker Compose!" cuando se accede a ella.
Ahora, necesitamos un Dockerfile
para construir una imagen Docker para nuestra aplicación Flask. Crea un archivo llamado Dockerfile
en el directorio my-web-app
con el siguiente contenido:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["python", "app.py"]
Este Dockerfile utiliza una imagen ligera de Python 3.9, establece el directorio de trabajo, copia e instala las dependencias de requirements.txt
, copia el código de la aplicación, expone el puerto 5000 y especifica el comando para ejecutar la aplicación.
También necesitamos un archivo requirements.txt
para la dependencia de Flask. Crea un archivo llamado requirements.txt
en el directorio my-web-app
con el siguiente contenido:
Flask==2.2.2
Finalmente, crearemos un archivo docker-compose.yml
para definir nuestro servicio. Crea un archivo llamado docker-compose.yml
en el directorio my-web-app
con el siguiente contenido:
version: "3.8"
services:
web:
build: .
ports:
- "5000:5000"
Este archivo docker-compose.yml
define un servicio llamado web
. Indica a Docker Compose que construya la imagen usando el Dockerfile
en el directorio actual (.
) y mapee el puerto 5000 del host al puerto 5000 del contenedor.
Ahora, construyamos y ejecutemos el servicio usando Docker Compose. Asegúrate de estar en el directorio ~/project/my-web-app
.
docker-compose up -d
Este comando construye la imagen (si no está ya construida), crea un contenedor para el servicio web
y lo inicia en modo desatendido (-d
).
Puedes comprobar si el contenedor está en ejecución usando el comando docker ps
.
docker ps
Deberías ver un contenedor para el servicio my-web-app-web-1
en ejecución.
Para verificar que la aplicación funciona, puedes acceder a ella usando curl
.
curl http://localhost:5000
Deberías ver la salida "Hello, Docker Compose!".