Skip to content

Latest commit

 

History

History
131 lines (99 loc) · 5.71 KB

File metadata and controls

131 lines (99 loc) · 5.71 KB
Docker Logo WordPress Logo

🚀 WordPress Docker Stack (Alta Performance)

Ambiente containerizado robusto com Nginx, PHP-FPM 8.5, MariaDB e cache otimizado.


📌 Visão Geral

Esta arquitetura foi desenhada para extrair o máximo de performance e estabilidade do WordPress rodando em contêineres Docker. Ela soluciona problemas clássicos (como lentidão no Nginx e erros visuais de PHP) através de uma abordagem baseada em microserviços, dividindo explicitamente o Banco de Dados, o Processador PHP e o Servidor Web.

🏗️ Arquitetura dos Serviços

  1. wp_nginx (Servidor Web & Proxy Reverso): Imagem oficial baseada em Alpine. Configurado para servir arquivos estáticos diretamente (CSS, JS, Imagens) com cache de 30 dias e encaminhar requisições dinâmicas via Socket Unix para o PHP-FPM. Bloqueia acesso direto a arquivos de sistema (wp-config.php, .env, .git).
  2. wp_php (Processador PHP-FPM 8.5): Imagem oficial wordpress:php8.5-fpm-alpine. Otimizada com opcache ativado, upload_max_filesize alto e workers dinâmicos. A comunicação com o Nginx é feita de maneira super eficiente montando um socket compartilhado. Os "Deprecated Warnings" do PHP 8.5 foram ocultados para garantir uma interface de usuário limpa em temas/plugins defasados.
  3. wp_mariadb (Banco de Dados Otimizado): Imagem oficial LTS do MariaDB. Selecionado devido ao seu thread pool nativo e melhor desempenho geral com consultas de CMS em comparação com o MySQL tradicional.

🛠️ Tecnologias Utilizadas

  • Nginx (Alpine)
  • PHP-FPM (v8.5 - Alpine)
  • MariaDB (LTS)
  • WordPress (Última versão suportada pela imagem FPM)
  • Docker & Docker Compose

🚀 Como Iniciar (Walkthrough)

Siga este passo a passo para subir a stack na sua máquina.

1️⃣ Clonar/Preparar o Diretório

Garanta que você possui este repositório contendo o docker-compose.yml e as pastas de configuração (nginx/, php/).

A estrutura necessária é:

📦 docker/
 ┣ 📂 nginx/
 ┃ ┣ 📂 conf.d/
 ┃ ┃ ┗ 📜 wordpress.conf
 ┃ ┗ 📜 nginx.conf
 ┣ 📂 php/
 ┃ ┣ 📜 php.ini
 ┃ ┗ 📜 www.conf
 ┣ 📜 .env
 ┗ 📜 docker-compose.yml

2️⃣ Configurar as Credenciais e Variáveis de Ambiente

O projeto depende de um arquivo .env para gerenciar senhas e portas com segurança. O arquivo .env já deve estar configurado na raiz com a seguinte estrutura base:

MYSQL_ROOT_PASSWORD=SuaSenhaForte
MYSQL_DATABASE=wordpress_db
MYSQL_USER=wp_user
MYSQL_PASSWORD=SuaSenhaForte

WORDPRESS_DB_HOST=mariadb:3306
WORDPRESS_DB_NAME=wordpress_db
WORDPRESS_DB_USER=wp_user
WORDPRESS_DB_PASSWORD=SuaSenhaForte
WORDPRESS_TABLE_PREFIX=wp_
WORDPRESS_DEBUG=0
WORDPRESS_CONFIG_EXTRA="define('WP_DEBUG_DISPLAY', false); @ini_set('display_errors', 0);"

NGINX_HTTP_PORT=80
NGINX_HTTPS_PORT=443
SERVER_NAME=localhost

PHP_MEMORY_LIMIT=512M
PHP_UPLOAD_MAX_FILESIZE=64M
PHP_MAX_EXECUTION_TIME=300

💡 UX Tip: O uso do WORDPRESS_DEBUG=0 garante que os alertas "Deprecated" gerados por temas antigos (ex: Kallyas) no PHP 8.5 não quebrem a interface visual (frontend) do seu site.

3️⃣ Subir os Contêineres

Navegue até o diretório do projeto e execute o comando mágico:

docker compose up -d

A flag -d significa detached mode, permitindo que os contêineres rodem em segundo plano.

4️⃣ Acompanhar os Logs (Opcional, mas Recomendado)

Para ter certeza de que tudo subiu corretamente (ou para fazer troubleshooting):

docker compose logs -f

5️⃣ Acesso Inicial

Abra seu navegador favorito e acesse a porta definida (padrão 80): 👉 http://localhost

O que vai acontecer? Você será recebido pela clássica tela "Five Minute Install" do WordPress. Nela, você criará o seu nome de usuário Administrador e senha para acessar o painel administrativo (/wp-admin). As credenciais do MariaDB (.env) já foram injetadas automaticamente!


🔧 Manutenção e Solução de Problemas (Troubleshooting)

🚨 Erro 502 Bad Gateway no Nginx

Se abrir a página e vir a tela "502 Bad Gateway" escrita pelo Nginx, significa que o Nginx está de pé, mas não conseguiu se comunicar com o PHP-FPM.

  1. Verifique os logs do nginx (docker compose logs nginx). Se disser Permission denied no php-fpm.sock...
  2. Vá ao arquivo php/www.conf e garanta que está configurado: listen.mode = 0666 (e não 0660).
  3. Reinicie os serviços: docker compose restart php nginx.

🚨 Erro ao Iniciar: "not a directory: Are you trying to mount a directory onto a file"

O Docker tenta montar arquivos (nginx.conf, www.conf, php.ini) a partir do seu computador. Se esses arquivos forem excluídos ou corrompidos no hospedeiro antes de rodar o docker compose up -d, o Docker cria instintivamente pastas vazias (ex. pastas chamadas www.conf/) e o container crasha.

  • Solução: Remova esses falsos diretórios criados no seu terminal, crie os arquivos de texto genuínos nos diretórios corretos e suba a stack novamente (docker compose up -d).

📦 Limpar Tudo (Resetar Banco de Dados)

Se você bagunçou a instalação e quer começar do total zero (isso apaga TODOS os dados, posts e imagens!):

docker compose down -v

(O -v é o que destrói os volumes persistentes mariadb_data, wordpress_data e php_socket).


Construído com ♥ automatizado via Docker.