From 5cdf4e05d584fd0d6af1447c812011983d3183cf Mon Sep 17 00:00:00 2001 From: Marco Antonio Vivas <103132707+markovivas@users.noreply.github.com> Date: Sun, 28 Sep 2025 15:21:01 +0000 Subject: [PATCH] =?UTF-8?q?Cria=C3=A7=C3=A3o=20do=20README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 50 +++++++++++++++++++++++++- WordPress-com-Traefik.yml | 75 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 124 insertions(+), 1 deletion(-) create mode 100644 WordPress-com-Traefik.yml diff --git a/README.md b/README.md index 92459da..7b5c7f8 100644 --- a/README.md +++ b/README.md @@ -1 +1,49 @@ -# docker \ No newline at end of file +# WordPress com Traefik + +Este projeto utiliza Docker Compose para criar um ambiente WordPress com proxy reverso Traefik, banco de dados MariaDB e HTTPS automático via Let's Encrypt. + +## Arquivos + +- **WordPress-com-Traefik.yml**: Arquivo principal do Docker Compose que define os serviços e redes. + +## Serviços + +### Traefik (Proxy Reverso) +- Imagem: `traefik:v2.10` +- Dashboard: Porta 8080 +- HTTPS automático via Let's Encrypt +- Redireciona tráfego para o WordPress + +### Banco de Dados (MariaDB) +- Imagem: `mariadb:latest` +- Usuário: `wordpress` +- Senha: `example_dbpass` +- Database: `wordpress` + +### WordPress +- Imagem: `wordpress:latest` +- Conectado ao banco MariaDB +- Persistência de dados em `./data/wordpress` +- Acessível via Traefik em `https://intranet.local` + +## Redes +- `traefik_network`: Rede para o Traefik e WordPress +- `wordpress_network`: Rede para o WordPress e banco de dados + +## Como usar +1. Edite o arquivo `WordPress-com-Traefik.yml` conforme necessário (domínio, senhas, etc). +2. Execute: + ```bash + docker compose -f WordPress-com-Traefik.yml up -d + ``` +3. Acesse o dashboard do Traefik em `http://localhost:8080`. +4. Acesse o WordPress em `https://intranet.local` (configure o DNS/local para apontar para seu servidor). + +## Volumes +- `./data/letsencrypt`: Armazena certificados gerados pelo Traefik +- `./data/mariadb`: Dados do banco MariaDB +- `./data/wordpress`: Dados do WordPress + +## Observações +- Certifique-se de que o domínio `intranet.local` aponte para o IP do servidor Docker. +- O Traefik gerencia os certificados SSL automaticamente. \ No newline at end of file diff --git a/WordPress-com-Traefik.yml b/WordPress-com-Traefik.yml new file mode 100644 index 0000000..670246c --- /dev/null +++ b/WordPress-com-Traefik.yml @@ -0,0 +1,75 @@ +version: '3.8' + +services: + # Traefik Reverse Proxy com HTTPS habilitado + traefik: + image: traefik:v2.10 + container_name: traefik + command: + - --api.dashboard=true + - --providers.docker=true + - --providers.docker.exposedbydefault=false + - --providers.docker.network=traefik_network + - --entrypoints.web.address=:80 + - --entrypoints.websecure.address=:443 + - --certificatesresolvers.letsencrypt.acme.httpchallenge=true + - --certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web + - --certificatesresolvers.letsencrypt.acme.email=markovivas@gmail.com + - --certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json + ports: + - "80:80" + - "443:443" + - "8080:8080" # Dashboard do Traefik + volumes: + - /var/run/docker.sock:/var/run/docker.sock:ro + - ./data/letsencrypt:/letsencrypt + networks: + - traefik_network + restart: unless-stopped + + # Banco de Dados do WordPress + wordpress_db: + image: mariadb:latest + container_name: wordpress_db + restart: always + environment: + MYSQL_ROOT_PASSWORD: example_rootpass + MYSQL_DATABASE: wordpress + MYSQL_USER: wordpress + MYSQL_PASSWORD: example_dbpass + volumes: + - ./data/mariadb:/var/lib/mysql + networks: + - wordpress_network + labels: + - "traefik.enable=false" + + # WordPress + wordpress_app: + depends_on: + - wordpress_db + image: wordpress:latest + container_name: wordpress_app + restart: always + environment: + WORDPRESS_DB_HOST: wordpress_db + WORDPRESS_DB_USER: wordpress + WORDPRESS_DB_PASSWORD: example_dbpass + WORDPRESS_DB_NAME: wordpress + volumes: + - ./data/wordpress:/var/www/html + networks: + - wordpress_network + - traefik_network + labels: + - "traefik.enable=true" + - "traefik.http.routers.wordpress.rule=Host(`intranet.local`)" + - "traefik.http.routers.wordpress.entrypoints=websecure" + - "traefik.http.routers.wordpress.tls.certresolver=letsencrypt" + - "traefik.http.services.wordpress.loadbalancer.server.port=80" + +networks: + traefik_network: + driver: bridge + wordpress_network: + driver: bridge