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" # Router HTTP (redireciona para HTTPS) - "traefik.http.routers.wordpress-http.rule=Host(`intranet.local`)" - "traefik.http.routers.wordpress-http.entrypoints=web" - "traefik.http.routers.wordpress-http.middlewares=redirect-to-https" # Router HTTPS - "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" # Middleware de redirecionamento - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https" networks: traefik_network: driver: bridge wordpress_network: driver: bridge