Junior
Qual é a sua experiência com Docker Compose?
sobes.tech IA
Resposta da IA
Utilizo Docker Compose para definir e executar aplicações multicontêiner. A minha experiência inclui:
- Desenvolvimento de ambiente local: Criação de
docker-compose.ymlpara iniciar todos os serviços necessários (backend, frontend, base de dados, cache) para desenvolvimento local. Isto permite levantar rapidamente um ambiente isolado do sistema principal. - Testes: Uso do Docker Compose para criar ambientes de teste com diferentes configurações de serviços.
- Implantação em Staging/Produção: Embora para produção sejam frequentemente utilizados orquestradores mais robustos (Kubernetes), em fases iniciais ou para projetos pequenos, foi utilizado Docker Compose para implantação em servidores de staging.
Exemplos de uso de campos em docker-compose.yml:
services: Definição de um conjunto de contêineres.image: Especificação da imagem Docker a usar.build: Construção da imagem a partir de um Dockerfile.ports: Mapeamento de portas.volumes: Montagem de volumes para guardar dados ou montar código fonte.networks: Definição de redes personalizadas.depends_on: Estabelecimento de dependências entre serviços.environment: Passagem de variáveis de ambiente para o contêiner.
Exemplo de configuração simples para uma aplicação web e base de dados:
services:
webapp:
build: ./webapp # Construção a partir do Dockerfile no diretório webapp
ports:
- "80:80" # Mapeamento da porta 80 do host para a porta 80 do contêiner
environment:
DATABASE_URL: postgresql://user:password@db:5432/mydb # Variável de ambiente
depends_on:
- db # A web depende da base de dados
db:
image: postgres:13 # Uso da imagem PostgreSQL
volumes:
- db_data:/var/lib/postgresql/data # Persistência de dados
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: mydb
volumes:
db_data: # Definição do volume nomeado
Comandos típicos:
docker compose up -d # Iniciar serviços em modo background
docker compose down # Parar e remover serviços
docker compose build # Construir imagens
docker compose logs <nome_do_serviço> # Ver logs de um serviço específico
docker compose exec <nome_do_serviço> <comando> # Executar comando dentro do contêiner
Estou familiarizado com as versões de sintaxe do Compose e suas diferenças. Compreendo como usar ficheiros .env para gerir variáveis de ambiente e como aplicar perfis para lançar diferentes conjuntos de serviços.