# docker compose stop

O comando `docker compose stop` é utilizado para interromper a execução dos containers que estão ativos, mas sem removê-los. Isso permite que os containers sejam parados temporariamente e reiniciados mais tarde sem perder o estado ou as configurações.

## **Estrutura do Comando**

```bash
docker compose stop [opções] [SERVIÇOS...]
```

* **SERVIÇOS**: Você pode especificar quais serviços deseja parar. Se nenhum serviço for especificado, todos os containers dos serviços definidos no `docker-compose.yml` serão parados.

## **Principais Opções**

* `-t` ou `--timeout`: Define o tempo, em segundos, que o Compose aguardará antes de forçar a parada dos containers. O valor padrão é 10 segundos.

## **Comportamento Padrão**

* **Parada de Containers**: O comando `docker compose stop` envia um sinal `SIGTERM` para os processos em execução nos containers, permitindo que eles finalizem corretamente. Se os processos não responderem dentro do tempo definido (por padrão, 10 segundos), um sinal `SIGKILL` é enviado para forçar a parada.
* **Preservação do Estado**: Como os containers não são removidos, o estado interno dos containers, incluindo o sistema de arquivos e variáveis de ambiente, é preservado. Isso permite que os containers sejam reiniciados mais tarde com o comando `docker compose start` sem perda de dados ou configurações.

## **Exemplos**

1. **Parando todos os containers definidos no `docker-compose.yml`**:

   ```bash
   docker compose stop
   ```
2. **Parando um serviço específico**:

   ```bash
   docker compose stop web
   ```
3. **Parando múltiplos serviços específicos**:

   ```bash
   docker compose stop web db
   ```
4. **Parando todos os containers com um timeout personalizado de 5 segundos**:

   ```bash
   docker compose stop -t 5
   ```

## **Diferenças com Outros Comandos**

* **`docker compose down`**: Enquanto o `stop` simplesmente para os containers, o `down` remove os containers, redes e outros recursos criados pelo Compose. Use `stop` quando você deseja preservar o estado dos containers para reiniciá-los posteriormente, e `down` quando você quer limpar completamente o ambiente.
* **`docker compose kill`**: O `kill` interrompe imediatamente os containers sem aguardar que os processos internos finalizem de forma adequada. O `stop`, por outro lado, dá tempo para que os processos internos encerrem corretamente.

## **Quando Utilizar**

O comando `docker compose stop` é ideal em situações onde você precisa pausar temporariamente a execução dos containers, mas planeja reiniciá-los mais tarde sem perder o estado atual. É útil em cenários de desenvolvimento ou em processos onde a manutenção do estado do container é importante.

## **Considerações Finais**

O `docker compose stop` é uma ferramenta valiosa para gerenciar o ciclo de vida dos containers em ambientes de desenvolvimento ou produção. Ele permite a parada controlada dos serviços, mantendo o ambiente preparado para uma retomada futura sem a necessidade de recriação dos containers ou reconfiguração do ambiente.
