IFCE Horizonte · Portal
ADS23 · Sistemas Operacionais

Semana de projeto · desenvolvimento

Colocando o toolkit de pé

Hoje não há conteúdo novo. A aula inteira é tempo de trabalho, com o professor circulando para destravar o que emperrar. A meta é sair daqui com o deploy.sh funcionando.

Meta do dia · deploy.sh subindo o serviçoFaltam · 2 encontros até a apresentação

Por onde começar

A ordem que funciona

Os três scripts têm uma dependência natural entre si. Fazer fora de ordem custa retrabalho.
1º
Suba o serviço na mão, sem script. Confirme que o container roda, com volume e limite de memória. Só depois automatize.
2º
deploy.sh — transforme os comandos que funcionaram num script, acrescentando as verificações.
3º
backup.sh — depende de já existir dado no volume, ou seja, do deploy funcionando.
4º
monitor.sh — depende do container estar no ar para haver o que monitorar.

Regra de ouro: nunca escreva um script para automatizar comandos que você ainda não viu funcionar manualmente. Automatizar algo quebrado só produz um script quebrado mais difícil de depurar.

Destravando sozinho

Erros comuns e onde está a resposta

Antes de chamar o professor, confira se o seu caso está aqui — quase todos estão.
SintomaCausa provávelOnde revisar
Permission denied ao rodar o scriptFaltou chmod +xEnc. 13, passo 1
"command not found" numa atribuiçãoEspaço em volta do =Enc. 13, passo 2
Erro de sintaxe no ifFaltam espaços dentro de [ ]Enc. 13, passo 3
docker run falha: nome já em usoContainer parado, não removidouse docker ps -aq
Dados somem ao recriar o containerFalta volume montadoEnc. 11, passos 6–7
Container morre com código 137Se docker inspect mostrar OOMKilled: true, limite de memória baixo demaisEnc. 9 e 10
Funciona no terminal, não no cronCaminho relativo, comando fora do PATH do cron ou % na linha do crontabEnc. 14, passo 3
[: 12.34: integer expectedO -gt só compara inteiros, e a porcentagem veio com decimalCorte com cut -d. -f1
Página nova não aparece depois do deployVolume montado sobre a pasta das páginas guarda a versão antigaPonha no volume só o que é dado, não o que vem na imagem
$'\r': command not foundScript editado no Windows (fim de linha diferente)sed -i 's/\r$//' script.sh
[[: not foundScript rodado com sh, que no Ubuntu não é o bashRode com bash script.sh ou ./script.sh
address already in useOutro processo ou container na mesma portasudo ss -tlnp | grep 8080

Trabalho em equipe

Todo mundo precisa entender tudo

Na apresentação, qualquer integrante pode ser questionado sobre qualquer parte — e a participação equilibrada é critério avaliado.

Como a equipe se divide

Padrão de risco

"Fulano faz os scripts porque manja mais, a gente ajuda no README." Resultado: uma pessoa sobrecarregada, o resto sem conseguir defender o trabalho.

Padrão que funciona

Cada um escreve um script, mas todos leem e testam os três. Ao fim de cada encontro, quem escreveu explica seu script para os demais — em 5 minutos.

Checklist do encontro

  • Subimos o serviço manualmente, com volume e limite de memória
  • O deploy.sh sobe o serviço com sucesso
  • O deploy.sh roda duas vezes seguidas sem erro
  • Começamos o backup.sh
  • Todos da equipe entendem o que cada script faz até aqui
  • Combinamos o que cada um traz pronto no próximo encontro
0 / 6 verificados