Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Quando trabalhamos com Docker Compose, uma dúvida comum é se é possível iniciar uma sessão interativa no container apenas com a configuração do arquivo YAML, sem recorrer a comandos específicos do Docker CLI.
O cenário típico envolve um serviço configurado com uma imagem minimalista, como Alpine, onde o comando de entrada (entrypoint) é definido para uma shell, por exemplo /bin/sh. Contudo, ao executar docker-compose up, o container simplesmente inicia, executa a shell e sai, encerrando o serviço automaticamente.
Isso ocorre porque o Docker Compose, por padrão, espera que o container permaneça ativo para que a sessão interativa seja possível. Caso contrário, o container termina sua execução assim que o comando principal termina, o que é o comportamento padrão de muitas imagens minimalistas. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco.
A configuração padrão de muitas imagens base é de que o comando principal (CMD ou entrypoint) seja um processo que termina logo, como um script ou uma shell que executa e sai. Assim, mesmo que você configure o entrypoint para /bin/sh, sem opções interativas, o container termina logo após iniciar. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar.
Para habilitar sessões interativas apenas com configurações do Docker Compose, é necessário garantir que o container permaneça ativo e aguardando comandos do usuário. Isso é feito adicionando algumas opções na configuração do serviço: Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco.
stdin_open: true (equivale ao -i do docker run)tty: true (equivale ao -t do docker run)Dessa forma, o container fica preparado para receber comandos interativos.
version: "3"
services:
app:
image: alpine:latest
entrypoint: /bin/sh
stdin_open: true
tty: true
Ao executar docker-compose up, o container inicia e permanece aguardando uma entrada de comando. Então, você pode conectar-se ao container usando:
docker exec -it nome_do_container /bin/sh
Ou, se desejar, iniciar uma sessão interativa diretamente ao subir, pode usar: O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar.
docker-compose run --rm app
que abrirá a shell imediatamente.
A principal limitação dessa abordagem é que ela não substitui o comando nativo docker run -it, que possui flags específicas para sessões interativas. Ainda assim, essa configuração é útil em cenários onde o gerenciamento do ambiente é feito majoritariamente via Docker Compose e há necessidade de sessões ocasionais. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco.
Por outro lado, é importante lembrar que deixar containers em um estado de espera constante pode impactar na utilização de recursos, além de dificultar a automação de processos de deploy ou testes contínuos. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta.
entrypoint ou command para uma shell ou script que aguarde comandos.stdin_open e tty para habilitar a interação.Se a intenção é facilitar o debug ou a manutenção, essa estratégia de configuração funciona bem. Para ambientes automatizados, prefira comandos específicos do Docker CLI. A decisão fica mais saudável quando o time consegue medir o impacto depois. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar.
Com essas dicas, é possível usar apenas o Docker Compose para iniciar uma shell interativa de forma eficaz, sem precisar de comandos adicionais toda hora. Assim, a gestão fica mais consistente, mesmo com imagens minimalistas ou configurações específicas. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. A decisão fica mais saudável quando o time consegue medir o impacto depois. A decisão fica mais saudável quando o time consegue medir o impacto depois. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. A decisão fica mais saudável quando o time consegue medir o impacto depois.
Carregando comentários...