Docker Do Zero Ao Avançado - Python + UV
Eu garanto que agora você VAI APRENDER DOCKER nos mínimos detalhes.
Já tentou aprender Docker e acabou não entendendo nada? No meu último vídeo longo, criei um ambiente Docker do Zero junto com você. Criei uma imagem Multistage super otimizada para builds e cache, e também deixei várias dicas modernas das últimas versões do Docker.
Montamos o projeto do zero. Da estrutura de arquivos e diretórios (pastas), .dockerignore, Dockerfile, docker-compose.yaml, e mais.
Além disso, também te deixo o link do repositório do projeto inteiro gratuitamente. Você poderá usar este repositório como base para seus próprios projetos.
Mostro o Docker container por dentro. A cada linha de comando criada no Dockerfile, vou entrar no container e mostrar exatamente o que está acontecendo. Foi criada alguma pasta? Algum cache? Os arquivos foram apagados? E assim por diante.
Com isso, espero que você mesmo consiga depurar (debugar) o seu próprio container e manipular a imagem como preferir.
Vamos falar de segurança, das partes que precisam ser ignoradas com .gitignore e .dockerignore, das variáveis de ambiente para modificação do comportamento do Python e do UV (Astral). Vamos criar um dotenv (arquivo de variáveis de ambiente .env) e carregar secrets e senhas de forma segura.
Também vamos subir uma base de dados postgresql junto com a nossa aplicação. Para isso, vamos usar o docker compose. Iremos buildar uma imagem com o Dockerfile e também vamos orquestrar essa imagem junto com uma base de dados usando o compose.yaml do docker compose.
Apesar de eu estar usando Python e UV (Astral) para este vídeo. Ao meu ver, isso não é um problema que possa te impedir de usar esse mesmo vídeo para qualquer outra linguagem de programação. O que quero dizer é que este vídeo não está “preso ao Python”, se você prestar atenção, poderá usar isso para sua linguagem favorita.
Este vídeo não é longo dessa forma sem motivos. Vamos aprender tantas coisas, que não tenho nem como descrever tudo isso aqui neste texto.
Vídeo
Repositório e Código Fonte: https://github.com/luizomf/dockeryt
Meus Cursos: https://www.otaviomiranda.com.br/
Capítulos do vídeo
00:00:00 - Ambiente Docker Python e UV
00:03:00 - Pyproject toml e uma API simples da FastAPI
00:07:00 - A estrutura de pastas do projeto
00:09:30 - Arquivos ignorados com dockerignore e gitignore
00:14:47 - O que é Docker e qual seu propósito
00:21:40 - Criando o Dockerfile para buildar a imagem
00:26:40 - Vamos criar uma imagem Multistage Build
00:32:12 - Dockerfile explicado e uv self update
00:34:30 - Comandos básicos do Docker
00:36:44 - Primeiro Build de imagem do Dockerfile
00:43:00 - Layers de uma imagem Docker explicados
00:46:25 - Cache de Layers de uma imagem Docker
00:50:00 - Docker Run cria e inicia um Docker container
00:54:00 - Containers Docker não salvam dados
00:56:24 - ENV e variáveis de ambiente no Dockerfile
01:02:09 - Tem como executar comandos no container incluindo UV
01:05:35 - Atualize os pacotes Debian e instale Build essential
01:09:41 - Comando para o UV baixar o Python na versão correta
01:13:01 - Workdir cria e acessa uma pasta no container
01:14:01 - Cache do UV com type cache do Docker
01:17:00 - Mount type bind temporário para uv lock e pyproject toml
01:18:50 - UV com no install project cria o ambiente virtual apenas
01:20:00 - A MÁGICA DOCKER MAIS GENIAL QUE VOCÊ VERÁ HOJE
01:23:00 - COPY copia o projeto para dentro do Docker Container
01:26:00 - Segundo Stage da imagem Multistage do Docker
01:27:40 - NÃO USE ROOT COMO USUÁRIO PADRÃO DO CONTAINER
01:30:00 - COPY do Stage Builder da Multistage Build do Docker
01:33:50 - Adicione o venv no PATH para acesso aos binários do projeto
01:36:50 - O que ENTRYPOINT e CMD fazem na build Docker
01:39:00 - Execute o seu script Python por fora do container
01:43:51 - Uvicorn, FastAPI e mapeamento de portas host e container
01:51:17 - Base de dados com PostgreSQL e o docker compose
01:59:03 - Docker compose e o que ele resolve
02:01:03 - compose yaml ou docker compose yml explicado linha a linha
02:09:38 - Use docker compose para build e gerenciamento de container
02:13:16 - Watch no Docker Compose assiste alterações no seu código
02:17:30 - PostgreSQL como Base de Dados em um segundo container
02:19:34 - Healthcheck, depends_on, condition e service_healthy
02:21:23 - Subindo o PostgreSQL primeiro, depois a nossa aplicação
02:24:35 - Justfile e just básico, ficamos sem tempo para isso
02:27:00 - Conclusão, você precisa aprender LINUX
É isso, te vejo no próximo.

Deixei o vídeo na minha playlist do YT, mas queria saber se acha apropriado a mudança de SO Windows pra Linux ou Mac para trabalhar com as ferramentas mais atuais como Docker, GIT etc.
Ou com o WSL2 isso já basta?
Eu particularmente, recomendo usar Linux, até pq os servidores de produção são em Linux e você já vai se ambientando