Passo 1
Antes de começarmos a configuração do WordPress no Portainer.io no Docker Swarm, é essencial garantir um desempenho ótimo e tempo de resposta rápido. Recomendamos contratar um servidor VPS, de preferência localizado no Brasil, para otimizar a experiência. Abaixo, fornecemos um link para contratação, juntamente com nosso suporte para auxiliá-lo durante o processo.
Pré-requisitos:
Passo 2
Criando Banco de Dados no MySQL
Abra o terminal e execute o seguinte comando para acessar seu banco de dados do MySQL com o seguinte comando:


mysql -u root -p
Coloque a senha do mysql definida stack anteriormente.
CREATE DATABASE wordpress;

Passo 3
Apontamento DNS (Claudflare)
Crie um domínio ou subdomínio, apontando para o seu servidor (IP).
Passo 4

Configurando Stack com Traefik
Neste tutorial vou ensinar dois métodos.
Um usando o Traefik e outro usando o Nginx para ativar o SSL (https) do seu domínio ou subdomínio.
Configurando Stack com Traefik
version: "3.8"
services:
wordpress:
image: wordpress:latest
volumes:
- wordpress_data:/var/www/html
networks:
- traefik_public
- digital_network
environment:
- WORDPRESS_DB_NAME=wordpress
- WORDPRESS_DB_HOST=mysql
- WORDPRESS_DB_PORT=3306
- WORDPRESS_DB_USER=root
- WORDPRESS_DB_PASSWORD= #atenção
- WP_REDIS_HOST=redis
- WP_REDIS_DATABASE=6
- VIRTUAL_HOST=subdominio.seusite.com.br #atenção
- WP_LOCALE=pt_BR
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager
labels:
- traefik.enable=true
- traefik.http.routers.wordpress.rule=Host(`subdominio.seusite.com.br`) #atenção
- traefik.http.routers.wordpress.entrypoints=websecure
- traefik.http.routers.wordpress.tls.certresolver=le
- traefik.http.routers.wordpress.service=wordpress
- traefik.http.services.wordpress.loadbalancer.server.port=80
- traefik.http.services.wordpress.loadbalancer.passHostHeader=true
volumes:
wordpress_data:
external: true
name: wordpress_data
networks:
traefik_public:
external: true
digital_network:
external: true
Configurando Stack com Traefik e #SubDominio (Opcional)
Segue exemplo de apontamento DNS na Cloudflare


version: "3.8"
services:
wordpress:
image: wordpress:latest
restart: always
volumes:
- wordpress_data:/var/www/html
networks:
- traefik_public
- digital_network
environment:
- WORDPRESS_DB_NAME=wordpress
- WORDPRESS_DB_HOST=mysql
- WORDPRESS_DB_PORT=3306
- WORDPRESS_DB_USER=root
- WORDPRESS_DB_PASSWORD= #atenção
- WP_REDIS_HOST=redis
- WP_REDIS_DATABASE=6
- VIRTUAL_HOST=subdominio.seusite.com.br #atenção
- WP_LOCALE=pt_BR
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager
# Regra para o domínio principal
- traefik.http.routers.wordpress-main.rule=Host(`curso.digitalinterativo.com.br`)
- traefik.http.routers.wordpress-main.entrypoints=websecure
- traefik.http.routers.wordpress-main.tls.certresolver=le
- traefik.http.routers.wordpress-main.service=wordpress
# Regra para os subdomínios
- traefik.http.routers.wordpress-subdomains.rule=HostRegexp(`{subdomain:[a-z0-9]+}.curso.digitalinterativo.com.br`)
- traefik.http.routers.wordpress-subdomains.entrypoints=websecure
- traefik.http.routers.wordpress-subdomains.tls.certresolver=le
- traefik.http.routers.wordpress-subdomains.service=wordpress
- traefik.http.services.wordpress.loadbalancer.server.port=80
- traefik.http.services.wordpress.loadbalancer.passHostHeader=true
volumes:
wordpress_data:
external: true
name: wordpress_data
networks:
traefik_public:
external: true
digital_network:
external: true
Instalação Nginx (Opcional)
Primeiramente, vamos instalar o Nginx, como temos a Stack do Traefik, no exemplo abaixo, deixei configurada para rodar em portas diferentes do padrão:
version: '3.8'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
volumes:
- npm_data:/data
- npm_letsencrypt:/etc/letsencrypt
networks:
- traefik_public
- digital_network
ports:
# Alteração das portas para evitar conflito com o Traefik
- '8080:8080' # Public HTTP Port
- '8443:8443' # Public HTTPS Port
- '81:81' # Admin Web Port
deploy:
replicas: 1
placement:
constraints:
- node.role == manager
resources:
limits:
cpus: "0.2"
memory: 256M
volumes:
npm_data:
external: true
npm_letsencrypt:
external: true
networks:
traefik_public:
external: true
digital_network:
external: true
Primeiro Acesso ao Nginx - Definindo Senha
Login Padrão: [email protected]
Senha Padrão: changeme


Passo 4 - Stack WordPress (Nginx)
version: "3.8"
services:
wordpress:
image: wordpress:latest
volumes:
- wordpress_data:/var/www/html
networks:
- traefik_public
- digital_network
environment:
- WORDPRESS_DB_NAME=wordpress
- WORDPRESS_DB_HOST=mysql
- WORDPRESS_DB_PORT=3306
- WORDPRESS_DB_USER=root
- WORDPRESS_DB_PASSWORD= #atenção
- WP_REDIS_HOST=redis
- WP_REDIS_DATABASE=6
- VIRTUAL_HOST=subdominio.seusite.com.br #atenção
- WP_LOCALE=pt_BR
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager
volumes:
wordpress_data:
external: true
name: wordpress_data
networks:
traefik_public:
external: true
digital_network:
external: true


Passo 5 - Primeiro Acesso WordPress



Gostou do conteúdo? Quer apoiar nosso trabalho?
Você pode fazer uma doação e nos ajudar a continuar criando conteúdo de qualidade. Acesse o link para ver as formas de pagamento disponíveis: https://www.asaas.com/c/io73sms6maiim7ud
Chave Pix: (15) 99855-8323