Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introdução a containers e Docker

Introdução a containers e Docker

Nicolas Vieira

October 08, 2024
Tweet

More Decks by Nicolas Vieira

Other Decks in Technology

Transcript

  1. quem sou eu • Me chamo Nícolas (nick); • Engenheiro

    de controle automação; • Trabalho como Lead Data Engineer na 90PoE (tecnologia para serviço marítimo); • Tenho dois gatos: Vorti (boca de sacola) e a Ciri; • Gosto de viajar, vinho, café, fotografia analógica e board games;
  2. compartilhar código é uma dor Roda o código aí! •

    Mas o que eu preciso instalar? • Precisa configurar o ambiente? • Como faz para subir o banco? • (aceitação) aqui não rodou, não funciona.
  3. você tem uma gama muito grande de variáveis • Versões

    de lib diferentes; • Atualizações diferentes; • Bancos com versões diferentes; • Dependência de API.
  4. e o container usa o O.S. do Host Contêineres possuem

    seu próprio sistema operacional virtualizado com acesso aos recursos do sistema (host).
  5. Docker significa muita coisa • Docker containers; • Docker runtime;

    • Docker hub (repositório de imagens); • Docker Inc. (empresa).
  6. e algumas instruções possíveis • FROM - define a imagem;

    • WORKDIR - define a pasta de trabalho; • COPY - adiciona arquivos para dentro da imagem; • RUN - roda comandos; • ARG - variáveis de build; • ENV - variáveis de ambiente; • etc. Mais aqui: https://docs.docker.com/reference/dockerfile/
  7. se você tirar o default do container - você precisa

    definir o valor docker run hello_world_fatec:v2.0.0
  8. curl --request GET \ --url localhost:8000/hello curl: (7) Failed to

    connect to localhost port 8000 after 0 ms: Couldn't connect to server mas o curl, não
  9. o run agora precisa da porta docker run -p 9000:8000

    hello_world_fatec:v3.0.0 9000 - Porta local (localhost) 8000 - Porta dentro do container
  10. e o curl funciona (para a porta mapeada) curl --request

    GET \ --url localhost:9000/hello {"message":"Hello, World!"}
  11. e algumas instruções possíveis • API - nossa pasta de

    aplicação; • db/migrations - pasta com as migrações, afinal: precisamos criar as tabelas antes da aplicação iniciar; • Dockerfile - continua sem modificação; • docker-compose.yaml - a nossa salvação
  12. Volumes que são uma maneira de compartilhar arquivos/pastas entre o

    containers e o host system; O path a esquerda de uma especificação de volume diz o caminho local (do seu computador); O path a direita do caractere ":" diz qual o caminho dentro do container; o que é novo:
  13. Para onde ir a partir daqui • Tente containerizar uma

    aplicação sua; • Pesquise multi-stage builds; • Valide se testes de unidade/integração se beneficiarão de containers; • Aprender health checks e ordem de dependência; • Profiles para o compose e imports entre Gostei muito, qual o próximo passo? • Muito depois: Vá atrás de configurar seu próprio cluster de Kubernetes no MiniKube, Kind ou k3s.
  14. e em muitos casos não é incomum rodar o código

    fora de containers para testes de unidade/integração.