Pular para conteúdo

Unidade 04

  1. O que significa fazer o "deploy" de uma aplicação? Qual a diferença fundamental entre os ambientes de desenvolvimento e produção?
  2. Por que não devemos reutilizar o ambiente virtual (venv) entre diferentes máquinas? Como devemos proceder para garantir que as dependências sejam instaladas corretamente em diferentes ambientes?
  3. Explique a importância de configurar DEBUG=False em produção. Quais são os riscos de manter DEBUG=True em um servidor de produção?
  4. Por que é importante nunca adicionar o SECRET_KEY de produção ao repositório Git? Como devemos gerenciar informações sensíveis como senhas e chaves secretas?
  5. O que é o Gunicorn e qual sua função no deploy de aplicações Django? Por que não usamos o servidor de desenvolvimento do Django (runserver) em produção?
  6. Explique o funcionamento do Gunicorn como daemon no systemd. Qual a diferença entre os arquivos .socket e .service?
  7. Qual a função do Nginx no contexto do deploy de uma aplicação Django? Por que utilizamos o Nginx como proxy reverso em vez de acessar o Gunicorn diretamente?
  8. Como o Nginx serve arquivos estáticos (CSS, JavaScript, imagens) de forma diferente do conteúdo dinâmico da aplicação Django?
  9. Explique o processo de coleta de arquivos estáticos com o comando collectstatic. Por que esse passo é necessário?
  10. Ao configurar múltiplos projetos Django em um mesmo servidor, quais estratégias podem ser utilizadas? Quais os cuidados necessários ao usar subdiretórios?
  11. Descreva o processo completo de atualização de um projeto Django em produção após fazer um git pull. Quais comandos devem ser executados e em que ordem?
  12. O que é conteinerização? Como essa tecnologia difere da virtualização tradicional?
  13. Compare máquinas virtuais e containers em relação aos seguintes aspectos:
    1. Uso de memória
    2. Tempo de inicialização
    3. Compartilhamento de recursos
    4. Nível de isolamento
    5. Portabilidade
  14. Explique os seguintes conceitos fundamentais do Docker:
    1. Imagem
    2. Container
    3. Volume
    4. Network
    5. Registry
  15. O que é um Dockerfile? Explique a função das seguintes instruções:
    1. FROM
    2. WORKDIR
    3. COPY e ADD
    4. RUN
    5. CMD e ENTRYPOINT
    6. EXPOSE
  16. Qual a diferença entre construir uma imagem Docker e executar um container? Apresente os comandos para ambas as operações.
  17. Explique as seguintes opções do comando docker run:
    1. -d
    2. -p 8000:8000
    3. -v $(pwd)/data:/app/data
    4. -e DEBUG=False
    5. --name
    6. --rm
  18. O que é o Docker Hub? Como podemos baixar uma imagem oficial do Docker Hub e como podemos enviar nossas próprias imagens?
  19. O que é o Docker Compose e qual problema ele resolve? Em que situações é mais vantajoso usar Docker Compose em vez de comandos docker run individuais?
  20. Explique a estrutura básica de um arquivo docker-compose.yml. O que são "services", "volumes" e "networks" nesse contexto?
  21. Quais as principais diferenças entre usar docker-compose up e docker-compose up -d? Como visualizar os logs dos serviços após iniciá-los em background?
  22. No contexto do tutorial de deploy Django com Docker, explique a função de cada um dos seguintes serviços:
    1. db (PostgreSQL)
    2. web (Django + Gunicorn)
    3. nginx
  23. Por que utilizamos um script entrypoint.sh no container Django? O que esse script faz antes de iniciar o Gunicorn?
  24. Como o Docker Compose gerencia a ordem de inicialização dos containers usando a diretiva depends_on? Isso garante que o banco de dados esteja completamente pronto antes do Django tentar se conectar?
  25. Explique como funcionam os volumes nomeados no Docker Compose (ex: postgres_data, static_volume, media_volume). Por que eles são importantes para persistência de dados?
  26. Como o Nginx se comunica com o Gunicorn dentro da rede Docker? Por que podemos usar server web:8000 em vez de um endereço IP?
  27. Compare o deploy tradicional de Django (aula 13) com o deploy usando Docker (aula 14). Quais as vantagens e desvantagens de cada abordagem?
  28. Qual a função do arquivo .dockerignore? Por que devemos excluir arquivos como .git, venv, .env e __pycache__ da imagem Docker?
  29. Quais comandos Docker/Docker Compose você usaria para:
    1. Ver os logs do serviço web em tempo real
    2. Executar as migrations do Django
    3. Criar um superusuário
    4. Acessar o shell bash do container web
    5. Fazer backup do banco de dados PostgreSQL
  30. Cite pelo menos 5 boas práticas ao trabalhar com Docker em produção.
  31. Quais tecnologias de orquestração de containers você pode usar além do Docker Compose para ambientes de produção em larga escala?