Conteúdo
Tutorial de docker compose up: opções e exemplos
docker compose up cria e inicia os serviços definidos em compose.yaml. Para começar com Compose, veja Introdução ao Docker Compose; para outros comandos do Compose, consulte comandos do docker compose.
Sintaxe
docker compose up [opções] [nome do serviço...]
Se você não especificar um serviço, todos serão iniciados. O up segue estas etapas: cria a rede, cria o Volume, baixa ou constrói a imagem quando necessário, cria os contêineres (e recria os que tiveram alterações de configuração) e inicia os contêineres.
Opções
| Opção | Descrição |
|---|---|
-d, --detach | Executa em segundo plano. Sem essa opção, os logs aparecem em primeiro plano; pressione Ctrl+C para parar |
--build | Constrói a imagem antes de iniciar |
--no-build | Não constrói; falha se a imagem não existir |
--pull always|missing|never | Define se a imagem deve ser baixada antes da inicialização |
--wait | Aguarda até que todos os serviços estejam em execução (os que têm verificação de integridade precisam estar healthy) antes de retornar; implica -d |
--wait-timeout segundos | Tempo máximo de espera de --wait |
--force-recreate | Recria os contêineres mesmo que a configuração não tenha mudado |
--no-recreate | Não recria contêineres que já existam |
--no-deps | Não inicia os serviços definidos em depends_on |
--scale serviço=quantidade | Inicia várias réplicas |
--remove-orphans | Remove os contêineres de serviços que não existem mais em compose.yaml |
-V, --renew-anon-volumes | Cria novos Volumes anônimos em vez de reutilizar os do contêiner antigo |
--abort-on-container-exit | Para todos os contêineres quando qualquer um deles parar (não pode ser usado com -d) |
--exit-code-from serviço | Usa o código de saída desse serviço como código de saída do comando; implica a opção anterior |
-t, --timeout segundos | Tempo de espera ao parar os contêineres |
-w, --watch | Monitora alterações nos arquivos e sincroniza ou reconstrói (veja aplicativo Node.js) |
--no-start | Apenas cria, sem iniciar |
--quiet-pull / --quiet-build | Não exibe o progresso do download ou da construção |
--no-log-prefix, --timestamps, --no-color | Formato dos logs no modo de primeiro plano |
--dry-run | Mostra o que seria feito, sem executar de verdade |
Projeto de exemplo
services:
web:
image: nginx:1.30-alpine
ports:
- "8080:80"
depends_on:
- cache
cache:
image: redis:8-alpine
volumes:
- cache_data:/data
worker:
image: alpine:3.23
command: ["sh", "-c", "echo worker done"]
volumes:
cache_data:
Iniciar todos os serviços
$ docker compose up -d
[+] up 15/15
✔ Image redis:8-alpine Pulled 3.4s
✔ Network ref-compose_default Created 0.0s
✔ Volume ref-compose_cache_data Created 0.0s
✔ Container ref-compose-worker-1 Started 0.4s
✔ Container ref-compose-cache-1 Started 0.6s
✔ Container ref-compose-web-1 Started 0.8s
$ docker compose ps -a
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
ref-compose-cache-1 redis:8-alpine "docker-entrypoint.s…" cache 1 second ago Up Less than a second 6379/tcp
ref-compose-web-1 nginx:1.30-alpine "/docker-entrypoint.…" web 1 second ago Up Less than a second 0.0.0.0:8080->80/tcp, [::]:8080->80/tcp
ref-compose-worker-1 alpine:3.23 "sh -c 'echo worker …" worker 1 second ago Exited (0) Less than a second ago
O worker termina depois de executar echo, por isso aparece como Exited (0). Esse é o comportamento normal de um serviço de execução única.
Processar apenas alguns serviços
$ docker compose up -d --no-deps web
[+] up 1/1
✔ Container ref-compose-web-1 Running 0.0s
$ docker compose up -d --force-recreate web
[+] up 2/2
✔ Container ref-compose-cache-1 Running 0.0s
✔ Container ref-compose-web-1 Started 0.4s
$ docker compose up -d --wait cache
[+] up 1/1
✔ Container ref-compose-cache-1 Healthy 0.5s
--no-deps web: processa apenaswebe ignora ocache, do qual ele depende. Como a configuração não mudou, apenasRunningé exibido.--force-recreate web: recriawebmesmo que a configuração não tenha mudado (Started). Como não foi usado--no-deps, ocachedefinido emdepends_ontambém é verificado (Running).--wait cache: aguarda até quecacheesteja pronto para retornar. Como a imagem do Redis não define uma verificação de integridade, o contêiner é considerado pronto quando está em execução.
--scale: várias réplicas
$ docker compose up -d --scale worker=3 worker
[+] up 3/3
✔ Container ref-compose-worker-3 Started 0.5s
✔ Container ref-compose-worker-2 Started 0.3s
✔ Container ref-compose-worker-1 Started 0.2s
$ docker compose ps -a worker
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
ref-compose-worker-1 alpine:3.23 "sh -c 'echo worker …" worker 4 seconds ago Exited (0) Less than a second ago
ref-compose-worker-2 alpine:3.23 "sh -c 'echo worker …" worker 1 second ago Exited (0) Less than a second ago
ref-compose-worker-3 alpine:3.23 "sh -c 'echo worker …" worker 1 second ago Exited (0) Less than a second ago
--scale worker=3 cria 3 contêineres para worker, com nomes numerados automaticamente como -1, -2 e -3. Não é possível escalar diretamente um serviço que tenha uma porta do host correspondente (ports), pois as portas do host entrariam em conflito.
--exit-code-from: executar testes no CI
$ docker compose up --abort-on-container-exit --exit-code-from worker worker
[+] up 2/2
✔ Container ref-compose-worker-2 Removed 0.0s
✔ Container ref-compose-worker-3 Removed 0.0s
Attaching to worker-1
worker-1 | worker done
worker-1 exited with code 0
Aborting on container exit...
Container ref-compose-worker-1 Stopping
Container ref-compose-worker-1 Stopped
w Enable Watch d Detach
- Apenas
workeré executado. Quando ele termina (--abort-on-container-exit), todo ouptambém termina, e o código de saída doupé o código de saída deworker(--exit-code-from). Use essa opção no CI para executar serviços de teste: se o teste falhar, o comando falha e o CI também. - Os contêineres
worker-2eworker-3, criados na etapa anterior com--scale, foram removidos desta vez (Removed), pois nenhuma quantidade de réplicas foi especificada e o padrão voltou a ser 1.
Capítulos relacionados
Exercícios
Exercício: altere a porta de web no compose.yaml do exemplo para 8081:80, aplique a alteração com um comando e confirme que apenas web foi recriado.
Resposta
docker compose up -d
Na saída, web aparece como Recreated/Started e cache como Running (sem alterações). Em docker compose ps, a porta PORTS de web passa a ser 0.0.0.0:8081->80/tcp.
Perguntas frequentes
Como aplicar as alterações feitas em compose.yaml?
Execute docker compose up -d novamente. O Compose compara as configurações e recria apenas os serviços que mudaram. docker compose restart não aplica novas configurações; veja o teste em [comandos do docker compose](/pt/docker/compose-commands/).
Por que o up -d não reconstruiu a imagem depois que alterei o Dockerfile?
Se a imagem já existir, up não a reconstrói automaticamente. Adicione --build: docker compose up -d --build.
Qual é a diferença entre --wait e service_healthy em depends_on?
depends_on controla a ordem de inicialização entre os serviços; --wait faz o próprio comando docker compose up aguardar até que todos os serviços estejam em execução (os que têm verificação de integridade precisam estar healthy) antes de retornar. Isso é útil para executar a próxima etapa em scripts e no CI.
Atualizado 14 de outubro de 2026