Esse tutorial faz parte do treinamento Docker com Python para Desenvolvedores. >>Clique aqui<< para adquirir com preço especial.
Passo 1: Criar estrutura de diretórios
1 2 3 4 5 6 |
# Criar diretório do projeto mkdir -p ~/docker-nginx cd ~/docker-nginx # Criar diretório para arquivos HTML mkdir html |
Passo 2: Criar o arquivo HTML
1 2 3 4 5 |
# Entrar no diretório html cd html # Criar index.html usando vi vi index.html |
Pressione “i” para entrar no modo de inserção e cole o seguinte conteúdo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<!DOCTYPE html> <html> <head> <title>Webserver01</title> <style> body { font-family: Arial, sans-serif; margin: 40px; background-color: #f0f0f0; } .container { background-color: white; padding: 20px; border-radius: 5px; box-shadow: 0 0 10px rgba(0,0,0,0.1); } </style> </head> <body> <div class="container"> <h1>Bem-vindo ao webserver01!</h1> <p>Se você está vendo esta página, seu container Nginx está funcionando corretamente.</p> <p>Porta externa: 8080</p> <p>Porta interna: 80</p> </div> </body> </html> |
Salve e saia do vi:
- Pressione
ESC
- Digite
:wq
- Pressione
Enter
Passo 3: Criar o Dockerfile
1 2 3 4 5 |
# Voltar para o diretório principal do projeto cd .. # Criar Dockerfile vi Dockerfile |
Pressione “i” e cole o seguinte conteúdo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
FROM nginx:latest # Criar um usuário não-root RUN addgroup --system --gid 1001 nginx_group && \ adduser --system --uid 1001 --ingroup nginx_group --no-create-home nginx_user # Criar diretórios necessários e ajustar permissões RUN mkdir -p /var/cache/nginx && \ mkdir -p /var/log/nginx && \ mkdir -p /usr/share/nginx/html && \ chown -R nginx_user:nginx_group /var/cache/nginx && \ chown -R nginx_user:nginx_group /var/log/nginx && \ chown -R nginx_user:nginx_group /usr/share/nginx/html # Ajustar permissões do diretório de configuração RUN touch /var/run/nginx.pid && \ chown -R nginx_user:nginx_group /var/run/nginx.pid # Copiar arquivos HTML COPY --chown=nginx_user:nginx_group ./html /usr/share/nginx/html # Permitir que o Nginx se vincule à porta 80 RUN setcap 'cap_net_bind_service=+ep' /usr/sbin/nginx EXPOSE 80 # Configurar o Nginx para usar o usuário não-root RUN sed -i 's/user\s*nginx;/user nginx_user;/g' /etc/nginx/nginx.conf # Mudar para usuário não-root USER nginx_user CMD ["nginx", "-g", "daemon off;"] |
Salve e saia do vi:
- Pressione
ESC
- Digite
:wq
- Pressione
Enter
Passo 4: Verificar a estrutura de arquivos
1 2 3 |
# Verificar se os arquivos foram criados corretamente ls -la ls -la html/ |
Passo 5: Executar o container
1 2 3 4 5 |
# Remover container anterior se existir docker rm -f webserver01 # Criar e executar o novo container docker run -d -p 8080:80 --name webserver01 nginx:latest |
Passo 6: Copiar o arquivo HTML para o container
1 2 |
# Copiar o arquivo index.html para o container docker cp html/index.html webserver01:/usr/share/nginx/html/index.html |
Passo 7: Verificar o status
1 2 3 4 5 6 7 8 |
# Verificar se o container está rodando docker ps # Verificar os logs docker logs webserver01 # Verificar o mapeamento de portas docker port webserver01 |
Passo 8: Testar o acesso
Via navegador web:
- Abra seu navegador favorito
- Acesse:
http://localhost:8080
Via linha de comando:
1 2 3 4 5 |
# Usando curl curl http://localhost:8080 # Usando wget wget -qO- http://localhost:8080 |
Passo 9: Comandos úteis para gerenciamento
Verificar o conteúdo do diretório HTML no container
1 |
docker exec webserver01 ls -la /usr/share/nginx/html |
Verificar a configuração do Nginx
1 |
docker exec webserver01 nginx -t |
Acessar o shell do container
1 |
docker exec -it webserver01 bash |
Verificar os logs em tempo real
1 |
docker logs -f webserver01 |
Reiniciar o container
1 |
docker restart webserver01 |
Parar o container
1 |
docker stop webserver01 |
Iniciar o container
1 |
docker start webserver01 |
Passo 10: Verificar informações do container
1 2 3 4 5 |
# Informações detalhadas do container docker inspect webserver01 # Uso de recursos docker stats webserver01 |
Resolução de problemas comuns
Se a página não carregar:
- Verificar se o container está rodando:
1 |
docker ps | grep webserver01 |
- Verificar se a porta está corretamente mapeada:
1 |
docker port webserver01 |
- Verificar logs por erros:
1 |
docker logs webserver01 |
Se houver problemas de permissão:
1 2 3 4 5 |
# Verificar permissões do arquivo no container docker exec webserver01 ls -la /usr/share/nginx/html # Ajustar permissões se necessário docker exec webserver01 chmod 644 /usr/share/nginx/html/index.html |
Acessos importantes:
- Local:
http://localhost:8080
- IP da máquina:
http://[seu-ip]:8080
- Container IP: Execute
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' webserver01
Dicas adicionais
Para modificar o conteúdo HTML sem reconstruir o container:
- Edite o arquivo local:
1 |
vi html/index.html |
- Copie para o container:
1 |
docker cp html/index.html webserver01:/usr/share/nginx/html/index.html |
Para backup do conteúdo do container:+
1 2 3 4 5 |
# Criar pasta de backup mkdir -p backup # Copiar arquivos do container docker cp webserver01:/usr/share/nginx/html/. backup/ |
Para monitoramento básico:
1 2 3 4 5 |
# Uso de recursos watch docker stats webserver01 # Logs em tempo real docker logs -f webserver01 |