Quero tornar isso um padrão run comportamento para alguns dos serviços que especifico em docker-compose.yml.
Então, as perguntas são:
Pode de alguma forma ser especificado em docker-compose.yml?
Se puder, Como posso fazer isso?
(INB4 " Use aliases bash, Luke!": Claro que posso impor isso fora de docker-compose.yml ao definir algum alias bash como alias docker-compose-run='docker-compose run --rm' mas estou interessado em Como posso impor isso exatamente através de docker-compose.yml, não de alguma forma extrnal.)
Interrompe contêineres e remove contêineres, redes, volumes e imagens criadas pelo up.
Por padrão, as únicas coisas removidas são:
- Containers for services defined in the Compose file- Networks defined in the networks section of the Compose file- The default network, if one is used
Redes e volumes definidos como externos nunca são removidos.
Embora você não possa declará-lo em docker-compose.yml isso irá protegê - lo alguns problemas; especialmente com volumes e redes.
-- rm-remova o recipiente após a execução. Ignorado no modo destacado.
Executa um comando único contra um serviço. Por exemplo, o comando a seguir inicia o serviço da web e executa o bash como seu comando.
docker-compose run web bash
[...] o comando passado por run substitui o comando definido no serviço configuracao.
[...] comando não cria nenhuma das portas especificado na configuração do serviço. Isso evita colisões de portas com portas já abertas. Se você deseja que as portas do Serviço sejam criadas e mapeado para o host, especifique o -- serviço-portas bandeira
Não faz parte do Dockerfile ou docker-compose.yml spec, é apenas uma opção cli para o comando run, então a resposta é não. Você precisará confiar em algo externo para fazer cumprir.
Se você tiver alguma ferramenta de compilação para o seu projeto, geralmente é melhor envolver as tarefas do docker-compose com isso. Por exemplo, nossos projetos gradle fornecem tarefas relacionadas ao docker que definem algumas opções padrão, como --rm para executar tarefas.