Lembro como se fosse hoje quando comecei a ouvir sobre containers, docker, imagens… Parecia que minha cabeça explodiria de tantas perguntas - "Mas como que vou colocar uma aplicação inteira dentro de uma imagem?… Como faço para acessar o banco de dados se ele não está instalado no meu computador?" - Acho que muitos já passaram por isso ou ainda passam e é completamente normal quando estamos aprendendo algo novo, estamos em constante evolução.
Para começarmos a nossa evolução, aqui vai um breve resumo do que são essas 3 palavras que você sempre vai ouvir quando o assunto é docker:
imagens: contém o código-fonte executável do aplicativo, bem como todas as ferramentas, bibliotecas e dependências que o código da aplicação precisa para ser executado. Quando você executa a imagem do Docker, ela se torna um container.
containers: são unidades executáveis de software, nas quais o código da aplicação é empacotado junto com todas suas bibliotecas e dependências, para que o código possa ser executado em qualquer lugar, seja no desktop local ou na nuvem. Resumindo, isso ajuda a minimizar a chance de você ouvir aquela frase: "na minha máquina funciona" 😅.
Docker: é uma ferramenta open-source que possibilita executarmos, criarmos e controlarmos containers.
Assim como nós, as ferramentas também estão sempre em evolução. Com o passar do tempo o Docker foi entendendo que é preciso facilitar a interação do desenvolvedor com a ferramenta e que não é necessário ser um expert em DevOps ou Infra para conseguir lidar com as aplicações dentro de containers.
O início do trabalho com aplicações dentro de containers pode ser confuso. Saber qual imagem utilizar, o que fazer para acessar a porta da aplicação, como baixar dependências do projeto durante o build da imagem nem sempre é tão óbvio. E foi pensando nisso foi criado o comando: docker init
.
Essa nova ferramenta, creio que podemos chama-lá assim, é uma forma de você iniciar um projeto com os arquivos necessários para rodar dentro de um container:
$ docker init
Welcome to the Docker Init CLI!
This utility will walk you through creating the following files with sensible defaults for your project:
- .dockerignore
- Dockerfile
- compose.yaml
Após executar o comando docker init
ele mostra quais arquivos serão criados para nós. Vou aproveitar e explicar o que é cada um deles:
.dockerignore: aquele famoso arquivo que diz para nossos versionadores o que eles devem ignorar na hora de subir as mudanças que estamos fazendo em nosso código.
Dockerfile: onde a mágica acontece... aqui estará toda a descrição de imagens, atualmente são duas. Uma utilizada para o build, no caso uma mais completa e geralmente com todos os SDKs da linguagem e outra para criar a versão final, no caso quase sempre uma alpine que é a menor distro linux que temos disponível.
compose.yaml: ele é o arquivo que possibilita você definir e rodar vários containers de uma só vez. Por exemplo, se você tem um banco de dados e um cache você pode configurá-los dentro do compose e quando executar o comando, todos os containers são iniciados de uma vez usando as configurações que existem neste arquivo.
Em seguida temos que escolher qual a linguagem do projeto que queremos implementar:
Let's get started!
? What application platform does your project use? [Use arrows to move, type to filter]
> Go - suitable for a Go server application
Python - suitable for a Python server application
Node - suitable for a Node server application
Other - general purpose starting point for containerizing your application
Don't see something you need? Let us know!
Quit
Como ainda é uma ferramenta que está em desenvolvimento - até a data deste post - ela ainda não tem suporte para todas as linguagens e frameworks. Porém já contamos com Go, Python e Node parar criar nossas imagens e o time de desenvolvimento está trabalhando para lançar o quanto antes o suporte para Java, Rust, e .NET. De quebra podemos preencher um formulário para dizer qual linguagem gostaríamos de ter suporte no docker init
. Aqui está o link do google form.
Em resumo, o docker init
é uma ferramenta para facilitar o processo para o desenvolvedor que deseja criar os arquivos Docker e containizar sua aplicação, reduzindo um pouco o risco de erros e inconsistência para quem não está tão acostumado ainda com o mundo Docker.
Deixo aqui também a documentação oficial do docker init
. Caso vocês queiram ler um pouco mais sobre esta nova ferramenta.
Top comments (2)
Massa Rafa , muito bom o conteúdo.
Valeu Fer, fica ligado que logo tem mais :)