From 249dc6675ea4690a2de76883d3832b3d2b7dbefb Mon Sep 17 00:00:00 2001 From: Gilles Filippini Date: Fri, 17 May 2024 14:25:58 +0200 Subject: [PATCH] feat: var BACKUP_SERVER to tag server as backup --- nginx.tmpl | 7 ++- test/test_backup-server/test_backup-server.py | 14 ++++++ .../test_backup-server/test_backup-server.yml | 44 +++++++++++++++++++ 3 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 test/test_backup-server/test_backup-server.py create mode 100644 test/test_backup-server/test_backup-server.yml diff --git a/nginx.tmpl b/nginx.tmpl index a7f4a0c..5802f55 100644 --- a/nginx.tmpl +++ b/nginx.tmpl @@ -317,8 +317,13 @@ upstream {{ $vpath.upstream }} { {{- $args = dict "container" $container "path" $path "port" $port }} {{- template "container_port" $args }} {{- if $ip }} - {{- $servers = add1 $servers }} + {{- $backup := parseBool (coalesce $container.Env.BACKUP_SERVER "false") }} + {{- if not $backup }} + {{- $servers = add1 $servers }} server {{ $ip }}:{{ $args.port }}; + {{- else }} + server {{ $ip }}:{{ $args.port }} backup; + {{- end }} {{- end }} {{- end }} {{- end }} diff --git a/test/test_backup-server/test_backup-server.py b/test/test_backup-server/test_backup-server.py new file mode 100644 index 0000000..096c33f --- /dev/null +++ b/test/test_backup-server/test_backup-server.py @@ -0,0 +1,14 @@ +import pytest + + +def test_web1_is_backup(docker_compose, nginxproxy): + for i in range(1, 10): + r = nginxproxy.get("http://web1.nginx-proxy.tld/port") + assert r.status_code == 200 + assert r.text == "answer from port 91\n" + +def test_web2_is_production(docker_compose, nginxproxy): + for i in range(1, 10): + r = nginxproxy.get("http://web2.nginx-proxy.tld/port") + assert r.status_code == 200 + assert r.text == "answer from port 82\n" diff --git a/test/test_backup-server/test_backup-server.yml b/test/test_backup-server/test_backup-server.yml new file mode 100644 index 0000000..672aba4 --- /dev/null +++ b/test/test_backup-server/test_backup-server.yml @@ -0,0 +1,44 @@ +version: "2" + +services: + web1: + image: web + expose: + - "81" + environment: + WEB_PORTS: 81 + VIRTUAL_HOST: web1.nginx-proxy.tld + network_mode: "none" + + web1_backup: + image: web + expose: + - "91" + environment: + WEB_PORTS: 91 + VIRTUAL_HOST: web1.nginx-proxy.tld + BACKUP_SERVER: "true" + + web2: + image: web + expose: + - "82" + environment: + WEB_PORTS: 82 + VIRTUAL_HOST: web2.nginx-proxy.tld + + web2_backup: + image: web + expose: + - "92" + environment: + WEB_PORTS: 92 + VIRTUAL_HOST: web2.nginx-proxy.tld + BACKUP_SERVER: "true" + + sut: + image: nginxproxy/nginx-proxy:test + volumes: + - /var/run/docker.sock:/tmp/docker.sock:ro + environment: + HTTPS_METHOD: nohttps