Docker em VPS: 4 Passos para Hospedar Múltiplos WordPress

Você gerencia múltiplos sites WordPress? Se sim, você provavelmente conhece aquela sensação de pânico às 3 da manhã. Um cliente liga, o site está fora do ar. Você entra no seu VPS compartilhado e descobre o pesadelo: um plugin de um site (Site A) quebrou a versão do PHP, e agora os outros oito sites (B a I) no mesmo servidor também caíram. É o “inferno das dependências”, e ele custa seu sono e sua reputação.

Gerenciar múltiplos sites em um único servidor é um ato de equilíbrio arriscado. Ou você paga caro por várias VPS pequenas, ou você joga todos os sites em um único ambiente, rezando para que um não derrube o outro. Mas e se houvesse uma maneira de dar a cada site sua própria “casa” isolada, com seus próprios recursos, tudo dentro do mesmo “terreno” (sua VPS)? É exatamente isso que vamos construir hoje. Este guia mostrará como usar múltiplos WordPress com Docker em uma única VPS, de forma segura, eficiente e escalável.

Usar o Docker transforma seu servidor de um frágil castelo de cartas em um conjunto robusto de blocos de construção independentes. Para entender como, é útil ver o que os próprios criadores dizem em sua documentação oficial do Docker, que o define como uma plataforma para “construir, compartilhar e rodar aplicações” em ambientes isolados.

O Que é Docker e Por Que Usar no WordPress?

Antes de mergulharmos nos passos, vamos entender nossos dois conceitos principais: Docker e Containers.

A Analogia (Docker é como LEGOs):

Pense na sua VPS como um grande “terreno” vazio. Da forma tradicional, para construir uma “casa” (site WordPress), você teria que trazer cimento (PHP), tijolos (MySQL), fiação (Nginx/Apache) e construir tudo do zero no local. Se você quisesse construir uma segunda casa ao lado, você teria que usar os mesmos materiais. Se a “Casa A” precisasse de fiação de 220v (PHP 8.1) e a “Casa B” de 110v (PHP 7.4), você teria um problema sério.

Docker muda esse jogo. Ele usa “Containers”.

  • Um Container é como uma casa pré-fabricada (um “LEGO” gigante). Ele já vem com tudo o que o site WordPress precisa para funcionar (o próprio WP, a versão exata do PHP, a conexão com o banco de dados) tudo selado dentro dele.

Você simplesmente “coloca” esse container no seu terreno (VPS). Ele funciona perfeitamente e é 100% isolado da casa ao lado. A “Casa A” pode rodar PHP 8.1 e a “Casa B” pode rodar PHP 7.4, no mesmo servidor, sem nunca se tocarem. Se um site for invadido ou quebrar, ele fica contido dentro de sua “casa”, sem afetar os vizinhos.

Benefícios Imediatos para Múltiplos WordPress

  • Isolamento Total: Um plugin quebrado ou um ataque de malware em um site não afeta nenhum outro.
  • Sem Conflitos de Versão: Rode sites com PHP, MySQL ou qualquer outra dependência diferente, lado a lado.
  • Eficiência: Containers são muito mais leves que máquinas virtuais completas. Você pode hospedar dezenas de sites em uma VPS KVM robusta que antes mal aguentava cinco.
  • Portabilidade: A “planta” da sua casa (um arquivo `docker-compose.yml`) pode ser usada para construir uma casa idêntica em qualquer outra VPS que tenha o Docker instalado. Mudar de provedor de hosting se torna trivial.

Os 4 Passos para Hospedar Múltiplos WordPress com Docker

Vamos ao guia prático. Dividimos o processo em 4 passos principais, desde a preparação do terreno até a construção de múltiplas “casas”.

Passo 1: Preparando sua VPS (O Terreno)

Primeiro, você precisa do seu “terreno”. Assumimos que você já tenha uma VPS limpa (recomendamos Ubuntu 22.04). O primeiro passo é instalar as “ferramentas de construção”.

  1. Instale o Docker: É o motor principal que permite rodar containers.
  2. Instale o Docker Compose: Esta é a ferramenta de “planta baixa”. Em vez de construir um container manualmente (o que é complexo), você escreve um arquivo simples (docker-compose.yml) dizendo “eu quero um container de WordPress e um de MySQL, e quero que eles conversem entre si”. O Docker Compose lê essa planta e constrói tudo para você.

A instalação é direta. No Ubuntu, seria algo assim:

# Atualiza os pacotes
sudo apt update

# Instala o Docker
sudo apt install docker.io
sudo systemctl start docker
sudo systemctl enable docker

# Instala o Docker Compose (verifique a versão mais recente no GitHub)
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Passo 2: O Cérebro da Operação – O Reverse Proxy (O Carteiro)

Aqui está um ponto crucial. Sua VPS tem apenas um “endereço” principal (um endereço IP). Se você tem 10 containers de sites, como o servidor sabe para qual container enviar um visitante que digita cliente-a.com?

A Analogia (O Carteiro do Prédio):

Pense no Reverse Proxy (Proxy Reverso) como o carteiro de um prédio de apartamentos. Sua VPS é o prédio, com um único endereço (ex: Rua Principal, 123). Os containers são os apartamentos (Apto 101, Apto 102, etc.).

O visitante (tráfego da web) chega no endereço “Rua Principal, 123”. O carteiro (Reverse Proxy) olha o nome na carta (o domínio, ex: cliente-a.com) e automaticamente entrega a carta no “Apto 101” (o container do Cliente A). Se a carta for para cliente-b.com, ele entrega no “Apto 102”.

Para isso, recomendamos o **Traefik**. É um proxy reverso moderno que “ouve” o Docker. Quando você lança um novo container de WordPress, o Traefik o detecta automaticamente e começa a rotear o tráfego para ele. Ele também pode gerar e renovar certificados SSL (HTTPS) automaticamente.

Você “instala” o Traefik como mais um container. Crie um arquivo docker-compose.yml para ele e rode-o. Ele ficará escutando todo o tráfego que chega na sua VPS.

Passo 3: Criando seu Primeiro Site (A Primeira Casa)

Agora a mágica acontece. Vamos criar a “planta baixa” para um site WordPress. Crie uma pasta para seu primeiro cliente (ex: /home/docker/cliente-a) e, dentro dela, crie um arquivo docker-compose.yml:

version: '3.8'

services:
  # Container do Banco de Dados
  db_cliente_a:
    image: mysql:8.0
    volumes:
      - db_data_cliente_a:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 'SENHA_MUITO_FORTE_AQUI'
      MYSQL_DATABASE: 'wp_clientea'
      MYSQL_USER: 'user_clientea'
      MYSQL_PASSWORD: 'OUTRA_SENHA_FORTE_AQUI'

  # Container do WordPress
  wordpress_cliente_a:
    image: wordpress:latest # Usa a imagem oficial do WordPress
    depends_on:
      - db_cliente_a
    volumes:
      - wp_files_cliente_a:/var/www/html
    restart: always
    environment:
      WORDPRESS_DB_HOST: db_cliente_a:3306
      WORDPRESS_DB_USER: 'user_clientea'
      WORDPRESS_DB_PASSWORD: 'OUTRA_SENHA_FORTE_AQUI'
      WORDPRESS_DB_NAME: 'wp_clientea'
    # Esta é a "etiqueta" que diz ao "carteiro" (Traefik) qual é o endereço
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.wp_clientea.rule=Host(`cliente-a.com`)"
      - "traefik.http.services.wp_clientea.loadbalancer.server.port=80"
      # Habilita o SSL (HTTPS) automaticamente
      - "traefik.http.routers.wp_clientea.entrypoints=websecure"
      - "traefik.http.routers.wp_clientea.tls.certresolver=meu_resolver_ssl"

volumes:
  db_data_cliente_a:
  wp_files_cliente_a:

networks:
  default:
    external:
      name: traefik_network # Conecta na mesma rede do "carteiro"

Não se assuste! Vamos analisar:

  • services: Define os dois containers que precisamos: db_cliente_a (MySQL) e wordpress_cliente_a (WordPress).
  • volumes: Isso é crucial. Diz ao Docker: “Salve os arquivos do banco de dados (db_data...) e os arquivos do site (wp_files...) fora do container, no disco da VPS.” Isso garante que, se você deletar o container, seus dados (posts, plugins) estarão seguros.
  • labels: São as instruções para o “carteiro” (Traefik). A linha Host(`cliente-a.com`) diz: “Qualquer tráfego para cliente-a.com, envie para este container.”
  • networks: Conecta seus containers à mesma rede que o Traefik está monitorando.

Para lançar o site, entre na pasta /home/docker/cliente-a e rode: docker-compose up -d. Em 30 segundos, seu site estará no ar.

Passo 4: Escalando para Múltiplos Sites (Construindo Mais Casas)

E agora, como adicionar o cliente-b.com?

É aqui que seu investimento valeu a pena. Você não precisa instalar outro PHP, outro MySQL, ou configurar outro servidor. Você simplesmente repete o Passo 3 com nomes diferentes.

  1. Crie uma nova pasta: /home/docker/cliente-b
  2. Copie o arquivo docker-compose.yml do Cliente A para a pasta do Cliente B.
  3. Abra o arquivo e altere:
    • Todos os _cliente_a para _cliente_b (ex: db_cliente_a vira db_cliente_b).
    • As senhas no environment (por segurança).
    • A label do Host para: Host(`cliente-b.com`)
  4. Na pasta /home/docker/cliente-b, rode: docker-compose up -d.

É isso. Em mais 30 segundos, o Traefik (nosso carteiro) detecta o novo container, vê sua etiqueta cliente-b.com, busca um certificado SSL para ele e o coloca no ar. Totalmente isolado do Cliente A.

Você pode repetir isso para cliente-c.com, cliente-d.com, e assim por diante, até o limite de recursos (CPU e RAM) da sua VPS.

Dicas de Profissional para Gerenciar seu Ambiente

Gerenciar **múltiplos WordPress com Docker** é poderoso, mas exige boas práticas.

  • Faça Backup dos Volumes: Seus dados (banco de dados e arquivos wp-content) vivem nos “volumes” que definimos. Sua rotina de backup deve focar em fazer cópias desses volumes, que geralmente estão em /var/lib/docker/volumes/.
  • Atualizando o WordPress (ou PHP): Para atualizar o PHP do Cliente A (ex: de wordpress:latest para wordpress:php8.1), você só precisa:
    1. Alterar a linha image: wordpress:latest no docker-compose.yml dele.
    2. Rodar docker-compose pull (para baixar a nova imagem).
    3. Rodar docker-compose up -d (para recriar o container com a nova imagem).O site ficará offline por cerca de 10 segundos e voltará com a nova versão, sem afetar nenhum outro site.
  • Use o Portainer: Se você não gosta de linha de comando, use o Portainer. É uma interface gráfica (que também roda em um container!) que lhe dá um painel visual de todas as suas “casas” (containers), permitindo parar, iniciar e monitorar tudo facilmente. É um excelente complemento, como detalhado no site oficial do Portainer.
  • Monitore Recursos: Fique de olho no uso de CPU e RAM da sua VPS. Embora os containers sejam leves, 50 sites WordPress ainda consumirão recursos. Ferramentas como htop ou um monitoramento de containers dedicado são essenciais.

Conclusão: Seu Checklist para o Sucesso com Docker

Você conseguiu. Você deixou para trás o “inferno das dependências” e transformou sua VPS de um frágil castelo de cartas em uma plataforma de hospedagem multi-tenant, segura e eficiente. Cada site agora vive em seu próprio universo isolado, permitindo que você durma tranquilamente, sabendo que um plugin quebrado não causará um desastre em cascata.

Precisa de ajuda com Múltiplos WordPress Docker? Fale com os especialistas da StayCloud!

Avalie este post!

Média da classificação 0 / 5. Número de votos: 0

Nenhum voto até agora! Seja o primeiro a avaliar este post.

Compartilhar post

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Últimos Posts

Cloudflare + VPS: 5 Configurações que Bloqueiam 95% dos Ataques

Cloudflare + VPS: 5 Configurações que Bloqueiam 95% dos Ataques

São 3 da manhã de uma terça-feira. Seu celular vibra na mesa de cabeceira. É o alerta do UptimeRobot: “Seu…
N8N: Como Automatizar WordPress e Economizar 15 Horas/Semana em Tarefas Repetitivas

N8N: Como Automatizar WordPress e Economizar 15 Horas/Semana em Tarefas Repetitivas

Sexta-feira, 18h. Você deveria estar comemorando o fim da semana, mas, em vez disso, está preso em uma planilha, copiando…
Ataques DDoS: 5 Camadas de Proteção que Mantêm Sites no Ar Durante Invasões

Ataques DDoS: 5 Camadas de Proteção que Mantêm Sites no Ar Durante Invasões

Seu site está no ar, vendas fluindo, até que tudo para. Páginas não carregam, checkout trava. Você virou alvo de…