Conteiner para desenvolvimento
Eu vou tentar descrever como usar docker no desenvolvimento e o porque considero importante.
O ponto que acredito seja de maior valor é a capacidade de compartilharmos as mesmas versões de SO, libs entre desenvolvedores, quem desenvolve sabe como isso pode gerar dor de cabeça.
Muitas vezes temos discussões do porque algo funciona na minha máquina mas não na de outro dev, homologação ou em uma catastrofe, produção.
Temos pelo menos 3 platarformas distintas para rodar nosso ambiente de desenvolvimento e cada uma conta com suas particularidades, porém, salvo em casos que a linguagem é especifica da Microsoft, o ambiente final é algum “sabor” de GNU/Linux, então nada mais natural que rodar um container Linux e ser feliz :-).
Alguém pode pensar que usar container dificulta o trabalho e eu concordo que isso é uma desvantagem, é mais fácil rodar algo como:
npm install
do que:
docker run -ti --rm -v $(pwd):/app -w /app node:10 npm install
e se tu fores do tipo que prefere clicar em icone, não faço nem ideia de como funciona :-)
Porém usando container nós temos controle das versões que estão sendo executadas e conseguimos reproduzir em diferentes máquinas.
No meu exemplo usando docker, sabemos que o node que está sendo usado é o 10, na versão sem docker nem o dev que está executando o comando deve saber :-)
Tendo este controle de versões em execução podemos solicitar/oferecer ajuda mais facilmente, podemos reproduzir um bug, nem sempre fácil, tendo ambiente mais controlados.
No caso de pacotes do NPM sabemos, eu espero, que alguns pacotes dependem de outras libs no sistema operacional para serem compilados durante a instalação, então usando Dockerfile podemos customizar nosso container para atender esses casos.
Esse post é um pontapé inicial e farei um próximo explicando o Dockerfile e o que vier mais a cabeça, ainda preciso aprender a escrever para um blog. :-)