Parcourir la source

fix: refresh backend DNS in frontend proxy

马小龙 il y a 1 mois
Parent
commit
7c9321881e
2 fichiers modifiés avec 13 ajouts et 1 suppressions
  1. 4 1
      deploy/docker/nginx.conf
  2. 9 0
      tests/test_local_docker_contract.py

+ 4 - 1
deploy/docker/nginx.conf

@@ -5,8 +5,11 @@ server {
     root /usr/share/nginx/html;
     index index.html;
 
+    resolver 127.0.0.11 valid=10s ipv6=off;
+    set $backend_upstream http://backend:5500;
+
     location /api/ {
-        proxy_pass http://backend:5500/api/;
+        proxy_pass $backend_upstream;
         proxy_http_version 1.1;
         proxy_set_header Host $host;
         proxy_set_header X-Real-IP $remote_addr;

+ 9 - 0
tests/test_local_docker_contract.py

@@ -91,6 +91,15 @@ def test_docker_images_build_from_source_directories_only():
     assert (ROOT / "wsgi.py").is_file()
 
 
+def test_nginx_reresolves_backend_after_container_replacement():
+    nginx = (ROOT / "deploy/docker/nginx.conf").read_text(encoding="utf-8")
+
+    assert "resolver 127.0.0.11" in nginx
+    assert "set $backend_upstream http://backend:5500" in nginx
+    assert "proxy_pass $backend_upstream" in nginx
+    assert "proxy_pass http://backend:5500" not in nginx
+
+
 def test_postgres_bootstrap_reuses_source_ddl_without_reversible_local_user():
     bootstrap = (ROOT / "deploy/docker/postgres/init/000-init.sql").read_text(
         encoding="utf-8"