TRILHA 4

🐳 Docker & Automacao

Empacotar suas aplicacoes em containers e automatizar o servidor: Docker, Compose, systemd e cron. Voce vai sair daqui colocando qualquer app numa "mala" que roda igual em qualquer lugar e deixando a maquina trabalhar sozinha.

4
Modulos
24
Topicos
~3h
Duracao
Intermediario
Nivel
SEU APP codigo + deps 🐳 DOCKER build run COMPOSE up -d SYSTEMD enable start CRON * * * * * SERVIDOR roda sozinho

Mapa da trilha

Conteudo detalhado

4.1 ~45 min

🐳 Docker Basico

O Docker e uma mala: voce coloca o app e tudo que ele precisa dentro de um container, e ele roda igual em qualquer maquina, sem o "na minha funciona".

O que e:

Um container e uma caixa fechada que carrega o app e tudo que ele precisa para rodar: codigo, bibliotecas e configuracoes. E como uma mala pronta que abre igual em qualquer lugar.

Por que aprender:

Acaba com o "na minha maquina funciona". Se roda no container, roda no servidor, no laptop do colega e na nuvem, exatamente igual.

Conceitos-chave:

Container nao e maquina virtual: e mais leve e sobe em segundos. Cada container e isolado dos outros, mas compartilha o sistema do servidor.

O que e:

O passo de baixar e instalar o Docker: Docker Desktop no Windows e Mac, ou o script oficial / gerenciador de pacotes no Linux do seu servidor.

Por que aprender:

Sem o Docker instalado, nenhum container roda. Instalar uma vez deixa o motor pronto para o resto da trilha.

Conceitos-chave:

Confira com docker --version e docker run hello-world. No Linux, adicione seu usuario ao grupo docker para nao precisar de sudo sempre.

O que e:

O comando docker run baixa uma imagem (se preciso) e sobe um container a partir dela. Com ele voce coloca um servidor web no ar em um comando.

Por que aprender:

E o comando que voce mais vai usar. Em segundos voce tem um banco, um site ou uma ferramenta rodando, sem instalar nada na sua maquina.

Conceitos-chave:

-d roda em segundo plano, -p 8080:80 liga uma porta sua a porta do container, --name da um apelido. docker ps lista o que esta rodando.

O que e:

A imagem e o molde congelado (a receita pronta); o container e uma copia viva rodando daquele molde. De uma imagem voce cria quantos containers quiser.

Por que aprender:

Confundir os dois gera bagunca. Entender a diferenca ajuda a saber o que apagar, o que reaproveitar e por que o container some mas a imagem fica.

Conceitos-chave:

docker images lista moldes; docker ps -a lista containers. Imagem = classe, container = objeto. Imagens vem do Docker Hub.

O que e:

O Dockerfile e um arquivo de texto com a receita da sua imagem: de qual base partir, o que copiar, o que instalar e qual comando rodar ao iniciar.

Por que aprender:

E como voce empacota o SEU app, e nao so usa os prontos. Com um Dockerfile, qualquer pessoa monta a mesma imagem com um unico comando.

Conceitos-chave:

Instrucoes em maiusculas: FROM (base), COPY, RUN (instala), EXPOSE (porta), CMD (comando de inicio). Cada linha vira uma camada.

O que e:

O docker build transforma o Dockerfile numa imagem real; o docker push envia essa imagem para um registro (como o Docker Hub) para usar em qualquer servidor.

Por que aprender:

E o ciclo completo: da receita ao app publicado. Com a imagem no registro, fazer deploy vira so um docker pull no servidor.

Conceitos-chave:

docker build -t usuario/app:1.0 . gera e nomeia (tag). Faca docker login antes do push. A tag latest e a versao padrao.

Ver Completo
4.2 ~45 min

🎼 Docker Compose

O Compose e o maestro: em vez de subir cada container na mao, voce descreve toda a orquestra de servicos num arquivo e sobe tudo junto com um comando.

O que e:

O Docker Compose e uma ferramenta para definir e rodar varios containers juntos. Voce descreve a aplicacao inteira (app + banco + cache) num arquivo so.

Por que aprender:

Apps reais raramente sao um container. Sem o Compose, subir app + banco vira uma sequencia chata de comandos longos e frageis.

Conceitos-chave:

Toda a stack vive num docker-compose.yml. docker compose up sobe tudo, down derruba. Um arquivo versionado = ambiente reproduzivel.

O que e:

Um arquivo em formato YAML que lista os servicos da sua aplicacao. Cada servico aponta para uma imagem (ou um build) e suas configuracoes.

Por que aprender:

E o coracao do Compose. Entender a estrutura basica permite ler e escrever qualquer stack que voce encontrar pela frente.

Conceitos-chave:

YAML usa indentacao (espacos, nunca Tab). Comece por services: e, sob ele, cada servico com image ou build e ports.

O que e:

Servicos sao os containers; redes deixam eles conversarem entre si pelo nome; volumes guardam dados que precisam sobreviver quando o container e recriado.

Por que aprender:

Sem volume, voce perde o banco de dados a cada restart. Sem rede certa, o app nao acha o banco. Esses tres conceitos sustentam qualquer stack.

Conceitos-chave:

Containers da mesma stack se acham pelo nome do servico (ex.: db). Volumes mapeiam uma pasta persistente. Dados no container somem; dados no volume ficam.

O que e:

O momento de juntar tudo: definir um servico de app e um de banco no mesmo arquivo e subir a aplicacao completa com um unico docker compose up.

Por que aprender:

E o cenario mais comum de verdade. Quando voce sobe app + banco juntos, ja consegue rodar uma aplicacao completa no seu servidor.

Conceitos-chave:

docker compose up -d sobe em segundo plano. O app acha o banco pelo nome do servico. Use depends_on para definir a ordem de subida.

O que e:

As ferramentas para ver o que cada container esta fazendo: logs mostra a saida, ps mostra o estado e exec entra dentro do container.

Por que aprender:

Quando algo nao sobe, o log diz o porque. Sem saber ler logs, voce fica adivinhando; com eles, voce resolve em minutos.

Conceitos-chave:

docker compose logs -f acompanha em tempo real. docker compose exec app sh abre um terminal dentro do container para investigar.

O que e:

O fluxo de atualizar a aplicacao: baixar a nova imagem, recriar os containers e, se algo der errado, voltar (rollback) para a versao anterior.

Por que aprender:

Toda app evolui. Saber atualizar sem derrubar tudo e voltar atras rapido evita aquele susto de "quebrei a producao e nao sei desfazer".

Conceitos-chave:

docker compose pull baixa o novo, up -d recria so o que mudou. Fixar a tag da imagem (e nao usar so latest) torna o rollback simples.

Ver Completo
4.3 ~45 min

⚙️ Systemd

O systemd e o gerente de plantao do Linux: ele liga seus servicos no boot, vigia se caem e os reinicia sozinho. Servicos que nunca param.

O que e:

O systemd e o sistema que liga e gerencia tudo que roda no Linux: e o primeiro programa a subir no boot e o responsavel por iniciar os demais servicos.

Por que aprender:

E ele que mantem seu app no ar 24h. Sem o systemd, voce teria que reiniciar tudo na mao toda vez que o servidor reiniciasse.

Conceitos-chave:

A unidade basica e o "service" (.service). Voce conversa com o systemd pelo comando systemctl. Quase todo Linux moderno usa systemd.

O que e:

Um arquivo .service que descreve seu app para o systemd: qual comando rodar, em que pasta, com qual usuario e o que fazer se ele cair.

Por que aprender:

E como voce transforma um script solto num servico de verdade, gerenciado pelo sistema, que sobe sozinho e e tratado como peca seria.

Conceitos-chave:

Tres secoes: [Unit] (descricao e dependencias), [Service] (ExecStart, usuario) e [Install]. Os arquivos ficam em /etc/systemd/system/.

O que e:

Os comandos do dia a dia: start liga, stop desliga, restart reinicia e enable garante que o servico suba no boot.

Por que aprender:

Sao os botoes de controle do seu servico. Com eles voce sobe, derruba e reinicia sem reiniciar o servidor inteiro.

Conceitos-chave:

Diferenca-chave: start liga agora; enable liga em todo boot. Use systemctl status nome para conferir se esta ativo (active/running).

O que e:

O journalctl e a central de logs do systemd. Ele guarda tudo que cada servico escreveu, com data e hora, para voce consultar quando precisar.

Por que aprender:

Quando um servico falha, o log conta a historia. Saber filtrar o journal e o que separa "nao sei o que houve" de "achei o erro em 30 segundos".

Conceitos-chave:

journalctl -u nome filtra por servico; -f acompanha ao vivo; -e pula para o fim. Combine com --since para um intervalo.

O que e:

A forma de dizer ao systemd que um servico depende de outro: por exemplo, seu app so deve subir depois que o banco de dados ja estiver pronto.

Por que aprender:

Sem a ordem certa, o app sobe antes do banco e quebra no boot. Definir dependencias garante que tudo ligue na sequencia correta, sozinho.

Conceitos-chave:

No [Unit]: After= define ordem; Requires= obriga o outro a estar ativo; Wants= e uma dependencia suave (recomendada).

O que e:

A configuracao que faz o systemd reiniciar automaticamente um servico que travou ou caiu, sem que voce precise estar acordado para isso.

Por que aprender:

Apps caem. Com restart automatico, o servidor se cura sozinho e seu app volta ao ar em segundos, mesmo as 3 da manha.

Conceitos-chave:

No [Service]: Restart=always (ou on-failure) e RestartSec=5 (espera antes de tentar). Apos editar, rode systemctl daemon-reload.

Ver Completo
4.4 ~45 min

⏰ Cron Jobs

O cron e o despertador do servidor: voce agenda tarefas para rodarem sozinhas em horarios fixos, como backups todo dia de madrugada ou limpezas semanais.

O que e:

O cron e um agendador que roda no Linux o tempo todo, vigiando o relogio. Quando chega a hora marcada, ele dispara o comando que voce agendou.

Por que aprender:

E o jeito classico de automatizar tarefas repetitivas: backups, relatorios, limpezas. Voce configura uma vez e ele faz para sempre, sozinho.

Conceitos-chave:

Cada tarefa agendada e um "cron job". A lista de jobs vive numa tabela chamada "crontab". O cron roda em segundo plano e nao precisa de ninguem logado.

O que e:

A linha de um cron job comeca com cinco campos que definem quando rodar: minuto, hora, dia do mes, mes e dia da semana, seguidos do comando.

Por que aprender:

Errar a sintaxe e o erro numero um. Entender os cinco campos faz a diferenca entre "rodar todo dia as 3h" e "rodar a cada minuto sem parar".

Conceitos-chave:

Ordem: min hora dia mes diasemana. O * significa "todo". 0 3 * * * = todo dia as 3h. Use o site crontab.guru para conferir.

O que e:

O comando crontab -e abre, num editor, a sua tabela de agendamentos. Cada linha que voce escreve ali vira um job ativo ao salvar.

Por que aprender:

E a porta de entrada para criar, editar e remover seus jobs. Sem isso, voce nao consegue de fato agendar nada no servidor.

Conceitos-chave:

crontab -e edita, crontab -l lista. Cada usuario tem sua propria crontab. Use caminhos absolutos nos comandos para evitar surpresas.

O que e:

Casos reais de cron job: um backup do banco todo dia de madrugada, uma limpeza de arquivos temporarios toda semana, um script de manutencao mensal.

Por que aprender:

Ver exemplos prontos acelera tudo. Com poucos modelos na mao, voce adapta para qualquer rotina que o seu servidor precise.

Conceitos-chave:

Backup: 0 2 * * * chama um script de dump. Limpeza: 0 4 * * 0 (domingo) apaga temporarios. Sempre aponte para um script, nao um comando gigante.

O que e:

As formas de saber se um cron job rodou e o que ele fez: redirecionar a saida do comando para um arquivo de log e consultar o log do sistema.

Por que aprender:

Cron roda em silencio. Sem log, voce nunca sabe se o backup aconteceu de verdade, ate o dia que precisa dele e descobre que falhava ha meses.

Conceitos-chave:

Acrescente >> /var/log/meujob.log 2>&1 ao fim da linha para gravar saida e erros. No journal, filtre por journalctl -u cron (ou crond).

O que e:

Os systemd timers sao a alternativa moderna ao cron: um arquivo .timer agenda quando um .service deve rodar, integrado ao systemd.

Por que aprender:

Timers tem logs no journal, sabem recuperar execucoes perdidas e se integram aos servicos. Em servidores modernos, muitas vezes sao a escolha melhor.

Conceitos-chave:

Um par: o .service faz a tarefa, o .timer diz quando. OnCalendar= define o horario; systemctl list-timers mostra os proximos disparos.

Ver Completo
← Voltar para o inicio Proxima Trilha →