CodeGym /Cursos /Docker SELF /Configuração de redes e volumes para o aplicativo

Configuração de redes e volumes para o aplicativo

Docker SELF
Nível 23 , Lição 4
Disponível

5.1 Configurando Redes

Bora dar uma olhada detalhada em como configurar redes e volumes para nossa aplicação com múltiplos containers. Isso vai garantir a interação correta entre os serviços e o armazenamento duradouro dos dados.

Redes Docker permitem que os containers se comuniquem entre si. Na nossa aplicação, vamos usar a rede bridge pra conectar o frontend, o backend e o banco de dados.

Criando a rede

Já definimos a rede task-network no arquivo docker-compose.yml:

Yaml

networks:
  task-network:
    driver: bridge

Onde:

  • task-network: nome da rede que será usada para a interação entre os containers.
  • driver: bridge: tipo da rede. A rede bridge é padrão pra comunicação entre containers num único host.

Conectando os serviços à rede

Conectamos todos os serviços a essa rede no arquivo docker-compose.yml. Bora verificar se cada serviço tá conectado certinho:

Exemplo para o frontend:

Yaml

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

Exemplo para o backend:

Yaml

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

Exemplo para o banco de dados:

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 Configurando volumes

Os volumes do Docker permitem salvar os dados dos containers no sistema host, garantindo seu armazenamento permanente. No nosso aplicativo, vamos usar um volume para armazenar os dados do banco de dados PostgreSQL.

Criando o volume

Já definimos o volume db-data no arquivo compose.yaml:

Yaml

volumes:
  db-data:

Onde:

  • db-data: nome do volume que será usado para armazenar os dados do banco de dados PostgreSQL.

Conectando o volume ao serviço de banco de dados

Conectamos o volume db-data ao serviço de banco de dados no arquivo docker-compose.yml. Certifique-se de que isso foi feito corretamente:

Exemplo para o banco de dados:

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  

Onde:

  • volumes: define quais volumes serão conectados ao container.
  • db-data:/var/lib/postgresql/data: conecta o volume db-data ao diretório /var/lib/postgresql/data dentro do container. Esse diretório é usado pelo PostgreSQL para armazenar os dados.

5.3 Arquivo completo compose.yaml

Pra deixar claro e completo, aqui tá o arquivo completo compose.yaml, incluindo as configs de redes e volumes:

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:

Verificando as configs de redes e volumes

Depois de configurar as redes e os volumes, garante que tá tudo certo e funcionando direitinho:

  1. 1. Subindo os containers:
    Terminal
    
    docker compose up
                
  2. 2. Verificando a rede:
    • Usa o comando docker network ls pra garantir que a rede task-network foi criada.
    • Usa o comando docker network inspect task-network pra checar se todos os containers tão conectados nessa rede.
  3. 3. Verificando os volumes:
    • Usa o comando docker volume ls pra garantir que o volume db-data foi criado.
    • Usa o comando docker volume inspect db-data pra olhar os detalhes do volume.
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION