Merge pull request #1011 from Dokploy/fix/wordpress-loopback

fix(wordpress): route loopback requests through Traefik to fix cURL error 28 timeouts
This commit is contained in:
Mauricio Siu
2026-07-14 13:58:48 -06:00
committed by GitHub
2 changed files with 24 additions and 1 deletions

View File

@@ -1,6 +1,27 @@
services:
wordpress:
image: wordpress:latest
# Resolve the site's own domain to the Traefik container instead of the
# server's public IP. Loopback requests (REST API, WP-Cron, Site Health)
# otherwise depend on hairpin NAT, which times out on many hosts
# (cURL error 28). See https://github.com/Dokploy/templates/issues/128
command:
- bash
- -c
- |
if [ -n "$$WP_DOMAIN" ]; then
(
for i in $$(seq 1 60); do
TRAEFIK_IP="$$(getent hosts dokploy-traefik | awk '{print $$1; exit}')"
if [ -n "$$TRAEFIK_IP" ]; then
grep -q "[[:space:]]$$WP_DOMAIN\$$" /etc/hosts || echo "$$TRAEFIK_IP $$WP_DOMAIN" >> /etc/hosts
break
fi
sleep 2
done
) &
fi
exec docker-entrypoint.sh apache2-foreground
volumes:
- wp_app:/var/www/html
- ../files/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
@@ -10,6 +31,7 @@ services:
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: $DB_PASSWORD
WORDPRESS_DEBUG: ${WORDPRESS_DEBUG:-0}
WP_DOMAIN: ${WP_DOMAIN}
WORDPRESS_CONFIG_EXTRA: |
define('WP_MEMORY_LIMIT', '256M');
define('DISALLOW_FILE_EDIT', true);

View File

@@ -9,7 +9,8 @@ env = [
"WORDPRESS_DEBUG=0",
"DB_NAME=${db_name}",
"DB_USER=${db_user}",
"DB_PASSWORD=${db_password}"
"DB_PASSWORD=${db_password}",
"WP_DOMAIN=${main_domain}"
]
[[config.domains]]