Introducao ao Docker Compose - Configuracao multi-container

Intermediario | 50 min leitura | 2024.12.26

O que voce vai aprender neste tutorial

✓ Fundamentos do Docker Compose
✓ Definicao de servicos
✓ Redes e volumes
✓ Gerenciamento de variaveis de ambiente
✓ Exemplos praticos de configuracao

Step 1: compose.yaml basico

# compose.yaml
services:
  web:
    build: .
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=development
    volumes:
      - .:/app
      - /app/node_modules
    depends_on:
      - db

  db:
    image: postgres:16
    environment:
      POSTGRES_DB: myapp
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
    volumes:
      - postgres_data:/var/lib/postgresql/data
    ports:
      - "5432:5432"

volumes:
  postgres_data:

Step 2: Dockerfile

FROM node:20-alpine

WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .

EXPOSE 3000
CMD ["npm", "run", "dev"]

Step 3: Comandos basicos

# Iniciar
docker compose up -d

# Verificar logs
docker compose logs -f web

# Parar
docker compose down

# Rebuild
docker compose up -d --build

# Lista de servicos
docker compose ps

Step 4: Configuracao de producao

# compose.prod.yaml
services:
  web:
    build:
      context: .
      dockerfile: Dockerfile.prod
    restart: always
    environment:
      - NODE_ENV=production

  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
    depends_on:
      - web
docker compose -f compose.prod.yaml up -d

Step 5: Exemplo de ambiente composto

services:
  app:
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - db
      - redis

  db:
    image: postgres:16
    environment:
      POSTGRES_PASSWORD: password
    volumes:
      - db_data:/var/lib/postgresql/data

  redis:
    image: redis:alpine
    ports:
      - "6379:6379"

  adminer:
    image: adminer
    ports:
      - "8080:8080"

volumes:
  db_data:

Resumo

Construa e compartilhe ambientes de desenvolvimento facilmente com Docker Compose. Gerencie dependencias entre servicos e redes de forma declarativa.

← Voltar para a lista