Foi necessário entendimento de qual é a menor imagem docker disponível e a partir dela preparar o ambiente linux para build de um aplicativo "Hello World" em linguagem Go.
Esse desafio é muito empolgante principalmente se você nunca trabalhou com a linguagem Go!
- Você terá que publicar uma imagem no docker hub. Quando executarmos:
docker run /codeeducation
- Temos que ter o seguinte resultado: Code.education Rocks!
- A imagem de nosso projeto Go precisa ter menos de 2MB =)
Para iniciar o projeto go
go mod init hello
Para executar a aplicação go
go run .
Para fazer build da aplicação go
go build
Para realizar multistage building foi necessário utilizar duas imagens docker em um mesmo Dockerfile, onde a segunda imagem chama os valores processados pela primeira imagem. Assim podemos ter uma imagem docker que compila um código Go Lang, e depois de compilado podemos pegar o retorno dessa ação e então utilizarmos em nossa imagem final.
Foi selecionado a imagem: scratch
A imagem docker selecionada não possuí sequer terminal SH ou BASH, por isso na imagem, precisaremos executar sempre diretamente um binário.
Em nosso docker-compose.yml possuímos 1 configuração de serviço disponível:
- desafio-go: este é o serviço cujo qual utilizaremos para gerar a imagem docker que será upada e entregue na atividade.
Temos 4 scrips principais para facilitar a instalação e configuração do ambiente.
- O arquivo
run.sh
serve para realizar a execução do container direto da imagem Docker disponível no Docker Hub.
sh run.sh
- Este script serve para fazer Build e Push do Docker-Compose. Caso vá subir para um diretório de sua propriedade não se esqueça de alterar o
docker-compose.yml
para o seu repositório.
sh run-build-and-push-desafio-go.sh