Contém o exemplo de build de container do post WSL2 + Podman: Uma alternativa ao Docker Desktop e os scripts de instalação do post Podman + minikube
Projeto criado a muitos anos para auxiliar os advogados do escritório de advocacia que trabalhei. Ele já teve diversas versões e adaptações. A versão original foi construida em .NET framework 3.5 com WebForms. Normalmente utilizo este projeto do juridico para treinar conceitos e aprender linguagens novas com um problema real.
Esta versão é uma versão muito simplificada do programa original (somente o CRUD dos processos). O objetivo desta versão é mostrar o funcionamento de um build multistage para docker e podman
Ficou com preguiça de ler o post ou de copiar todos os comandos? Executa o install_podman.sh 😄
Pelo powershell
wsl exec sh ./scripts/install_podman.sh
Dentro da distro
sh scripts/install_podman.sh
Para efetuar o build da imagem execute o comando abaixo:
podman build -t juridico -f dockerfile.multistaging .
Após o build estar completo é possível verificar o resultado rodando o comando:
podman images | grep juridico
O resultado gerado deve ser algo parecido com:
localhost/juridico latest 1861fa76b7ab 3 months ago 201 MB
Para tornar o ambiente minikube com o podman minimamente viável, é necessário instalar uma série de ferramentas além do próprio minikube. A instalação de cada ferramenta necessária foi separada em um script. Desta forma é possível instalar somente o componente que está faltando.
A exceção do script de instalação do CRI-O, todos seguem a mesma forma de execução do script de instalação do podman:
Pelo powershell
wsl exec sh ./scripts/install_<ferramenta>.sh
Dentro da distro
sh scripts/install_<ferramenta>.sh
No caso do script de instalação do CRI-O é necessário passar a versão do CRI-O que deseja-se instalar (as versões podem ser consultadas aqui). Para executar o script:
Pelo powershell
wsl exec sh ./scripts/install_crio.sh 1.23
Dentro da distro
sh scripts/install_crio.sh 1.23
Com tudo instalado basta rodar o comando abaixo dentro do WSL
minikube start --driver=podman --container-runtime=cri-o
O primeiro passo é fazer o build da imagem e em seguida subir a imagem para um repositório de imagens ou carregá-la diretamente no minikube.
No post Podman + minikube optei pela abordagem de subir direto no minikube. Para fazer esse procedimento é preciso rodar 2 comandos:
-
Exportar a imagem para um arquivo .tar:
podman save -o juridico.tar localhost/juridico:latest
-
Carregar a imagem no minikube:
minikube image load juridico.tar
Após a imagem já estar disponível para ser baixada pelo minikube é possível efetuar o deployment com o comando:
kubectl apply -f deployment_files/deployment.yaml
E a configuração da service:
kubectl apply -f deployment_files/service.yaml
Com toda a aplicação configurada dentro do kubernetes, o próximo passo é expor a aplicação para a máquina host, caso contrário ela estará acessível somente dentro do WSL. Para expor a aplicação o comando rode o comando abaixo:
kubectl port-forward service/juridico-deployment 3001:3001