CodeGym /Cursos /Docker SELF /Configurando docker-compose.yml pra rodar todos os serviç...

Configurando docker-compose.yml pra rodar todos os serviços

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

4.1 Inicialização

Nesse passo, a gente vai configurar o arquivo compose.yaml pra rodar todos os serviços do nosso app multicontainer. O arquivo compose.yaml vai incluir configurações pro frontend, backend e pro banco de dados, além de definir redes e volumes.

Definindo a versão do Docker Compose

Começa aí definindo a versão do Docker Compose. Nesse exemplo a gente tá usando a versão 3:

Yaml

version: '3'

4.2 Definição dos serviços

Serviço 1: Frontend (ReactJS)

Vamos definir o serviço pro frontend, que vai ser construído a partir do diretório frontend e vai ficar disponível na porta 3000:

Yaml

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

Serviço 2: Backend (Flask)

Vamos definir o serviço pro backend, que vai ser construído a partir do diretório backend. Ele depende do serviço de banco de dados e vai ficar disponível na porta 5000:

Yaml

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

Onde:

  • depends_on: indica que o serviço backend depende do serviço database. Isso quer dizer que o banco de dados vai ser iniciado antes do backend.
  • environment: configura as variáveis de ambiente pra conexão com o banco de dados.

Serviço 3: Database (PostgreSQL)

Vamos definir o serviço pro banco de dados, usando a imagem oficial do postgres:13. Configuramos as variáveis de ambiente pra criar o banco de dados e as credenciais do usuário:

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:

  • environment: configura as variáveis de ambiente pra criar o banco de dados e o usuário quando o container for iniciado.
  • volumes: conecta o volume db-data pro armazenamento persistente dos dados.

4.3 Configurando redes e volumes

Vamos definir as redes e os volumes que serão usados pelos nossos serviços:

Yaml

networks:
  task-network:
    driver: bridge
      
volumes:
  db-data:

Onde:

  • networks: define a rede task-network com o tipo de driver bridge, que será usada para comunicação entre os containers.
  • volumes: define o volume db-data para armazenar os dados do banco de dados.

4.4 Arquivo completo docker-compose.yml

Agora vamos juntar todas as partes em um único arquivo docker-compose.yml:

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:

Explicação das configurações

  • build: especifica o caminho do diretório com o Dockerfile para construir a imagem.
  • ports: abre as portas no host para acessar os serviços.
  • depends_on: indica que o serviço depende de outro para garantir a ordem de inicialização.
  • environment: configura variáveis de ambiente para os serviços.
  • networks: define a rede para comunicação entre os containers.
  • volumes: define volumes para armazenamento persistente de dados.

4.5 Rodando a aplicação

Agora que o arquivo compose.yaml está configurado, a gente pode rodar todos os serviços com um único comando:

Terminal

docker compose up

Esse comando vai criar e rodar os containers para o frontend, backend e banco de dados, usando as configurações que estão definidas no compose.yaml.

Verificando o funcionamento

Depois de rodar os containers, confira se todos os serviços estão funcionando direitinho:

  1. Frontend: abre o navegador e acessa http://localhost:3000 pra verificar o frontend.
  2. Backend: abre o navegador e acessa http://localhost:5000 pra verificar o backend.
  3. Database: tenha certeza de que o container do banco de dados está rodando e que ele tá acessível pela conexão de rede com o backend.
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION