From eaff193055aeb8853e501136e15b4dd504d08fe0 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Fri, 13 Feb 2026 04:02:31 +1300 Subject: [PATCH] fix: Resolve PostgreSQL DNS failure by routing through Docker's embedded DNS The appwrite container's `dns: 172.16.238.100` (CoreDNS) bypassed Docker's embedded DNS, preventing resolution of service names like `postgresql`. CoreDNS only handles custom test domains and forwards unknown queries to Cloudflare, which can't resolve Docker service names. Fix: Add 127.0.0.11 (Docker embedded DNS) as primary resolver and configure CoreDNS to forward unknown queries to Docker DNS with Cloudflare as fallback. Bind CoreDNS to its static IP to avoid port conflict with Docker's DNS proxy. Co-Authored-By: Claude Opus 4.6 --- .github/workflows/tests.yml | 12 ++++++++++++ docker-compose.yml | 1 + tests/resources/coredns/Corefile | 9 +++++++-- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 4103cb3c5e..1fe10b5b1a 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -303,8 +303,20 @@ jobs: - name: Failure Logs if: failure() run: | + echo "=== Container Status ===" + docker compose ps + echo "=== Appwrite DNS Config ===" + docker compose exec -T appwrite cat /etc/resolv.conf || true echo "=== Appwrite Server Logs ===" docker compose logs appwrite + echo "=== Database Container Logs (${{ matrix.db_adapter }}) ===" + if [ "${{ matrix.db_adapter }}" = "MARIADB" ]; then + docker compose logs mariadb || true + elif [ "${{ matrix.db_adapter }}" = "MONGODB" ]; then + docker compose logs mongodb || true + elif [ "${{ matrix.db_adapter }}" = "POSTGRESQL" ]; then + docker compose logs postgresql || true + fi echo "=== Appwrite Worker Builds Logs ===" docker compose logs appwrite-worker-builds echo "=== OpenRuntimes Executor Logs ===" diff --git a/docker-compose.yml b/docker-compose.yml index 290f6c8480..1fa93ada87 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -64,6 +64,7 @@ services: networks: - appwrite dns: + - 127.0.0.11 - 172.16.238.100 labels: - "traefik.enable=true" diff --git a/tests/resources/coredns/Corefile b/tests/resources/coredns/Corefile index b156ba336d..8b2fbf14c5 100644 --- a/tests/resources/coredns/Corefile +++ b/tests/resources/coredns/Corefile @@ -1,10 +1,14 @@ -# Re-use public resolver to answer unknown queries +# Forward unknown queries to Docker's embedded DNS for service name resolution, +# with Cloudflare as fallback for external names. +# Bind to our static IP to avoid conflict with Docker's DNS proxy on 127.0.0.11. . { - forward . 1.1.1.1 + bind 172.16.238.100 + forward . 127.0.0.11 1.1.1.1 } # Zones configuration webapp.com { + bind 172.16.238.100 template IN A { match "^webapp\.com\.$" answer "{{ .Name }} 60 IN A 203.0.0.1" @@ -65,6 +69,7 @@ webapp.com { # Zones configuration wrong-a-webapp.com { + bind 172.16.238.100 template IN A { match "^wrong-a-webapp\.com\.$" answer "{{ .Name }} 60 IN A 203.0.0.5"