- Dia 1: Fundamentos essenciais
- Dia 2: Rede, volumes e boas práticas
- Dia 3: Servidor MariaDB
- Dia 4: WordPress com PHP-FPM
- Dia 5: NGINX com TLS
- Dia 6: Integração completa e variáveis de ambiente
- Dia 7: Testes finais e documentação
Objetivo: Compreender bem Docker, Dockerfile, Compose e Makefile
- Conceitos principais: container vs imagem vs VM
- Dockerfile: comandos (FROM, RUN, CMD, ENTRYPOINT, ENV, EXPOSE, VOLUME)
- Docker Compose: estrutura e sintaxe do
docker-compose.yml - PID 1: Entenda o PID 1 e por que loops infinitos são proibidos
- Makefile: estrutura básica, targets como
up,down,clean
- Criar um container Docker simples com Alpine (
docker build) - Criar um
docker-compose.ymlcom um serviço "hello" - Criar um
Makefileque executadocker-compose upedown
Objetivo: Aprender a conectar containers e usar volumes corretamente
- Redes no Docker: (bridge customizada)
- Comunicação entre containers: por hostname (sem
--link) - Volumes: nomeados e bind mounts
- Criar uma rede Docker personalizada via
docker-compose - Criar um volume nomeado e montar dentro do container
- Testar comunicação entre dois containers com
ping
Objetivo: Criar o container do banco de dados MariaDB com volume
- O que é MariaDB e como configurá-lo (instalação manual em Alpine/Debian)
- Scripts de inicialização (
.sql) - Persistência de dados com volumes
- Criar Dockerfile para MariaDB (sem imagem pronta)
- Criar volume para persistir os dados
- Testar conexão com banco (
mysql -u user -pdentro do container)
Objetivo: Instalar o WordPress manualmente com PHP-FPM
- Diferença entre PHP-FPM e Apache
- Estrutura do WordPress
- Configuração do
wp-config.php
- Baixar o WordPress e copiar para o container
- Configurar php-fpm no Dockerfile (sem nginx)
- Criar volume com os arquivos do WordPress
- Testar o serviço acessando diretamente com PHP CLI
Objetivo: Criar o container do NGINX e configurar HTTPS
- Configuração de NGINX com
server,ssl_certificate,ssl_protocols - Geração de certificados TLS com
openssl(autoassinado) - Redirecionamento HTTP → HTTPS
- Criar Dockerfile do NGINX com Alpine/Debian
- Copiar certificado TLS gerado manualmente
- Configurar
default.confpara redirecionar ao PHP-FPM - Testar HTTPS localmente (
curl -k https://...)
Objetivo: Integrar todos os serviços e aplicar práticas de segurança
.enve variáveis no docker-compose- Docker secrets (opcional)
- Segurança: sem senhas no Dockerfile
-
Criar
.envcom variáveis de usuário, senha, DB, etc. -
Atualizar todos os
docker-compose.ymle Dockerfiles para usar ENV -
Criar estrutura de pastas:
srcs/ ├── mariadb/ ├── wordpress/ ├── nginx/ -
Colocar volumes em
/home/login/data -
Adicionar
restart: alwaysem todos os containers -
Editar
/etc/hostsparalogin.42.fr
Objetivo: Garantir que tudo funciona, limpar, e preparar para entrega
- WordPress acessível via https://login.42.fr
- NGINX só escutando na porta 443 com TLSv1.2 ou 1.3
- Admin WordPress com nome seguro (sem “admin”)
- Containers se comunicando apenas via rede customizada
- Sem uso de
tail,sleep,while true, etc. - Tudo controlado pelo Makefile
- Escrever um README explicando como rodar o projeto
- Comentar o
docker-compose.ymlpara facilitar leitura