O documento discute as vantagens e desvantagens do uso de containers para lidar com dependências e ambientes. Apresenta como containers podem ajudar a resolver problemas com dependências e diferenças entre ambientes, mas também como ainda é possível cometer erros se não forem seguidas boas práticas de gerenciamento de dependências e construção de imagens.
5. Roteiro
1. Dependências
1.1. Bibliotecas da linguagem
1.2. Configurações
1.3. Serviços externos
1.4. Linguagem
1.5. Sistema operacional
2. Ambientes
2.1. Construção de imagens
2.2. Uso de camadas
2.3. Movimentação de imagens
13. O que mais podemos considerar
como dependências?
1.2 Configurações do sistema
○ *.properties
○ *.yml
○ *.xml
○ *.conf
○ Variáveis de ambiente
14. ● Configurações fixas
● ENVS definidos no
arquivo da imagem...
Cometemos algumas falhas como:
15. Como melhorar?
● Configurações via variáveis de ambiente.
○ DATABASE_URL, EXTERNAL_SERVICE_URL,
EXTERNAL_SERVICE_API_KEY
● Variáveis informadas ao container na execução.
○ docker run
-e DATABASE_URL='xyz'
-e EXTERNAL_SERVICE_URL='abc' ...
16. 1.3 Ferramentas e serviços externos
○ Banco de dados
○ Cache
○ Mensageria
○ Armazenamento de arquivos
○ Programas/bibliotecas do SO
Também são dependências...
17. ● Imagem com outros serviços encapsulados.
● Sistema usando programas do SO.
● Diretórios da máquina host.
Cometemos algumas falhas como:
-> Cada serviço em um container.
-> Busque bibliotecas da linguagem.
-> Serviços de armazenamento.
18. cometemos algumas falhas como:
○ personalizações nas instalações!
Use !!!
○ imagens oficiais!
○ avalie imagens “+ enxutas”: slim, alpine.
1.4 Linguagem
19. ○ Sabemos qual está sendo usado?
○ Conhecemos o gerenciador de pacotes do SO?
1.5 O sistema operacional!
20. Container vai te ajudar!
Mas não vai resolver os
problemas de dependências!
22. Ambientes...
2.1 Construímos pensando em dev ou prd?
○ É preciso entender cada pacote instalado.
○ Podemos tirar coisas desnecessárias.
○ Considere aspectos de segurança.
33. VII. Vínculo de porta
VIII. Concorrência
IX. Descartabilidade
X. Dev/prod semelhantes
XI. Logs
XII. Processos de Admin
I. Base de Código
II. Dependências
III. Configurações
IV. Serviços de Apoio
V. Build, release, run
VI. Processos
12factor.net