CodeGym /Cursos /Docker SELF /Configuración de redes y volúmenes para la aplicación

Configuración de redes y volúmenes para la aplicación

Docker SELF
Nivel 23 , Lección 4
Disponible

5.1 Configuración de redes

Vamos a revisar en detalle cómo configurar redes y volúmenes para nuestra aplicación multicontenedor. Esto garantizará la interacción correcta entre servicios y el almacenamiento duradero de datos.

Las redes de Docker permiten que los contenedores interactúen entre sí. En nuestra aplicación usaremos una red de tipo bridge para la conexión entre el frontend, el backend y la base de datos.

Creación de una red

Ya definimos la red task-network en el archivo docker-compose.yml:

Yaml

networks:
  task-network:
    driver: bridge

Dónde:

  • task-network: el nombre de la red que se usará para la interacción de los contenedores.
  • driver: bridge: el tipo de red. La red bridge es estándar para la conexión de contenedores en un mismo host.

Conexión de servicios a la red

Conectamos todos los servicios a esta red en el archivo docker-compose.yml. Verifiquemos que cada servicio esté correctamente conectado:

Ejemplo para el frontend:

Yaml

frontend:
  build: ./frontend
  ports:
    - "3000:3000"
  networks:
    - task-network

Ejemplo para el backend:

Yaml

backend:
  build: ./backend
  ports:
    - "5000:5000"
  depends_on:
    - database
  networks:
    - task-network
  environment:
    - DATABASE_URL=postgresql://taskuser:taskpassword@database:5432/taskdb

Ejemplo para la base de datos:

Yaml

database:
  image: postgres:13
  environment:
    - POSTGRES_DB=taskdb
    - POSTGRES_USER=taskuser
    - POSTGRES_PASSWORD=taskpassword
  networks:
    - task-network
  volumes:
    - db-data:/var/lib/postgresql/data

5.2 Configuración de volúmenes

Los volúmenes de Docker permiten guardar los datos de los contenedores en el sistema host, asegurando su almacenamiento a largo plazo. En nuestra aplicación, vamos a usar un volumen para almacenar los datos de la base de datos PostgreSQL.

Creación de un volumen

Ya hemos definido el volumen db-data en el archivo compose.yaml:

Yaml

volumes:
  db-data:

Dónde:

  • db-data: es el nombre del volumen que será usado para almacenar los datos de la base de datos PostgreSQL.

Conexión del volumen al servicio de base de datos

Hemos conectado el volumen db-data al servicio de base de datos en el archivo docker-compose.yml. Asegúrate de que esto está configurado correctamente:

Ejemplo para la base de datos:

Yaml

database:
  image: postgres:13
  environment:
    - POSTGRES_DB=taskdb
    - POSTGRES_USER=taskuser
    - POSTGRES_PASSWORD=taskpassword
  networks:
    - task-network
  volumes:
    - db-data:/var/lib/postgresql/data  

Dónde:

  • volumes: define qué volúmenes serán conectados al contenedor.
  • db-data:/var/lib/postgresql/data: conecta el volumen db-data con el directorio /var/lib/postgresql/data dentro del contenedor. Este directorio es usado por PostgreSQL para almacenar datos.

5.3 Archivo completo compose.yaml

Para mayor claridad y completitud, aquí tienes el archivo completo compose.yaml, que incluye la configuración de redes y volúmenes:

Yaml

version: '3'

services:
  frontend:
    build: ./frontend
    ports:
      - "3000:3000"
    networks:
      - task-network
        
  backend:
    build: ./backend
    ports:
      - "5000:5000"
    depends_on:
      - database
    networks:
      - task-network
    environment:
      - DATABASE_URL=postgresql://taskuser:taskpassword@database:5432/taskdb
        
  database:
    image: postgres:13
    environment:
      - POSTGRES_DB=taskdb
      - POSTGRES_USER=taskuser
      - POSTGRES_PASSWORD=taskpassword
    networks:
      - task-network
    volumes:
      - db-data:/var/lib/postgresql/data
        
networks:
  task-network:
    driver: bridge
        
volumes:
  db-data:

Comprobación de la configuración de redes y volúmenes

Después de configurar las redes y los volúmenes, asegúrate de que todo esté correctamente configurado y funcionando bien:

  1. 1. Iniciar los contenedores:
    Terminal
    
    docker compose up
                
  2. 2. Comprobar la red:
    • Usa el comando docker network ls para confirmar que la red task-network se haya creado.
    • Usa el comando docker network inspect task-network para verificar que todos los contenedores estén conectados a esta red.
  3. 3. Comprobar los volúmenes:
    • Usa el comando docker volume ls para confirmar que el volumen db-data se haya creado.
    • Usa el comando docker volume inspect db-data para verificar los detalles del volumen.
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION