Skip to content

Instantly share code, notes, and snippets.

@numpde
Last active October 21, 2024 16:18
Show Gist options
  • Save numpde/ac45f963df0f5fb7e4b066693e5d71dc to your computer and use it in GitHub Desktop.
Save numpde/ac45f963df0f5fb7e4b066693e5d71dc to your computer and use it in GitHub Desktop.
WP/WC: WordPress
# Run as:
# TRAEFIK_IP=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' traefik) docker-compose --env-file ./env/nairobi/.env -f ./marketplaces/nairobi/docker-compose.yml up -d
services:
wordpress:
image: wordpress:latest
container_name: wordpress_nairobi
restart: always
environment:
WORDPRESS_DB_HOST: "${MYSQL_HOST:?Please set MYSQL_HOST in .env or Docker Compose configuration.}"
WORDPRESS_DB_USER: "${MYSQL_USER:?Please set MYSQL_USER in .env or Docker Compose configuration.}"
WORDPRESS_DB_PASSWORD: "${MYSQL_PASSWORD:?Please set MYSQL_PASSWORD in .env or Docker Compose configuration.}"
WORDPRESS_DB_NAME: "${MYSQL_DATABASE:?Please set MYSQL_DATABASE in .env or Docker Compose configuration.}"
WORDPRESS_DOMAIN_0: "${WORDPRESS_DOMAIN_0:?Please set WORDPRESS_DOMAIN_0 in .env or Docker Compose configuration.}"
WORDPRESS_DOMAIN_1: "${WORDPRESS_DOMAIN_1:?Please set WORDPRESS_DOMAIN_1 in .env or Docker Compose configuration.}"
TRAEFIK_IP: "${TRAEFIK_IP:?Please set TRAEFIK_IP in .env or Docker Compose configuration.}"
extra_hosts:
- "${WORDPRESS_DOMAIN_0}:${TRAEFIK_IP}" # Shortcut internal requests
- "${WORDPRESS_DOMAIN_1}:${TRAEFIK_IP}" # Shortcut internal requests
volumes:
- ./plugins:/var/www/html/wp-content/plugins
- ./themes:/var/www/html/wp-content/themes
- ./uploads:/var/www/html/wp-content/uploads
- ./wp-config.php:/var/www/html/wp-config.php
labels:
# Main WordPress Router
- "traefik.enable=true"
- "traefik.http.routers.wordpress.rule=Host(`${WORDPRESS_DOMAIN_0}`, `${WORDPRESS_DOMAIN_1}`)"
- "traefik.http.routers.wordpress.entrypoints=websecure"
- "traefik.http.routers.wordpress.tls.certresolver=le"
- "traefik.http.services.wordpress.loadbalancer.server.port=80"
# API Internal Proxy (applies to both subdomains)
- "traefik.http.routers.api-redirect.rule=Host(`api1-${WORDPRESS_DOMAIN_1}`, `api2-${WORDPRESS_DOMAIN_1}`) && PathPrefix(`/wp-json`)"
- "traefik.http.routers.api-redirect.entrypoints=websecure"
- "traefik.http.routers.api-redirect.tls.certresolver=le"
- "traefik.http.middlewares.api-redirect.replacepathregex.regex=^/wp-json/(.*)"
- "traefik.http.middlewares.api-redirect.replacepathregex.replacement=/wp-json/$1"
- "traefik.http.routers.api-redirect.middlewares=api-redirect"
networks:
- internal_nairobi
- ecommerce
networks:
ecommerce:
external: true
driver: bridge
internal_nairobi:
external: true
driver: bridge
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment