Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Como criar um container com scripts?

Douglas, Eu quero criar um container do ambiente de desenvolvimento da minha empresa. É um ubunto com o eclipse e rodo uma série de scripts para configurar (banco, jboss etc.). Então, como faço para rodar esses scripts e montar o container? E outra pergunta é: como fica o espaço em disco do meu container? Se a base de dados aumentar o que acontece? Nas VMs eu defino o tamanho em disco e posso setar para ser flexível inclusive.

Forte abraço e obrigado! Excelente curso

5 respostas
solução!

Olá David, tudo bem?

Uns pitacos meus sobre suas dúvidas ... uma direção muito interessante é uma estratégia com Docker multi-stage build https://docs.docker.com/develop/develop-images/multistage-build/ o ganho é bem significativo em tempo de execução e redução de recursos especialmente em ambientes Java. Sobre espaço em disco, é sempre uma má ideia persistir dados dentro do container uma vez que é um recurso de natureza efêmera, para resolver essa questão são utilizados os volumes https://docs.docker.com/storage/volumes/ você cria os volumes que atacha aos containers ... dessa forma a gestão é mais flexível e performa bem mais do que VMs.

Um abraço e bons estudos.

Oi JT, obrigado pela reposta. Quanto ao volume entendi e gostei do seu comentário dizendo que é uma melhor prática. Contudo, quanto ao multi-stage build, você acha que resolve o problema que falei? Deixa eu tentar ser mais claro: a configuração do nosso ambiente de desenvolvimento é iterativa. O script vai perguntando se pode baixar pacotes, se quer extrair, se quer instalar o postgres, ela configura as variáveis de ambiente etc. Com o multi-stage build você acredita ser possível configurar tudo isso?

Obrigado e abraços!

Olá David, tudo bem? Nesse caso, acho que você consegue sim usar o multi-stage build porém sobre essa parte de ser interativo e ir perguntando se deve ou não baixar, extrair e instalar ai já não acho possível, já que tudo isso é determinado diretamente no arquivo de criação da imagem.

Espero ter ajudado!

Olá David, sugestões sobre implementações do que você deseja:

Eu trabalho com devs que utilizam BackEnd Java / Kotlin em diferentes frentes como de microsserviços, funções AWS Lambda com runtime Java8 ... por meio do Gitlab Container Registry conseguimos implementar imagens que atendem a grupos de desenvolvedores em um repositório privado de imagens. Não chega a ser uma única imagem que atende a todos, tentar limitar o número de versões de bibliotecas, versões específicas de banco, etc ... O objetivo é que o dev tenha o ambiente pronto com todas as ferramentas necessárias o mais rápido possível.

Docker com estratégia multi-stage build entra nas pipelines para CI/CD no Gilab utilizando runners para os jobs, recursos como Jfrog Artifactory, Gradle, ferramentas de testes entram neste contexto (sempre pensando no uso de containers ao invés de instalação direta nas máquinas).

Não há uma regra escrita em pedra, discussões sobre o que atende o desenvolvimento na sua empresa com outros devs vai ajudar a construir esse ambiente, espero que algum insight relevante sobre a forma e ferramental que citei possa te auxiliar de alguma maneira ... uma última dica, você citou uso do Ubuntu, nada contra, muito pelo contrário no uso em desktop de desenvolvimento , mas construir uma imagem docker que seja útil e performática para os devs, algo como Alpine pode trazer resultados melhores.

Um abraço e bons estudos.

Pessoal, obrigado pelas respostas.