Browse Source

Merge pull request #2343 from nginx-proxy/docker-compose-upgrade

test: replace python docker-compose with docker compose
Nicolas Duchon 1 year ago
parent
commit
f044423e4e
77 changed files with 917 additions and 771 deletions
  1. 3 3
      README.md
  2. 2 1
      docker-compose-separate-containers.yml
  3. 2 1
      docker-compose.yml
  4. 3 3
      test/README.md
  5. 8 8
      test/conftest.py
  6. 2 2
      test/pytest.sh
  7. 0 1
      test/requirements/python-requirements.txt
  8. 15 13
      test/stress_tests/test_deleted_cert/docker-compose.yml
  9. 0 1
      test/stress_tests/test_unreachable_network/docker-compose.yml
  10. 22 20
      test/test_DOCKER_HOST_unix_socket.yml
  11. 2 1
      test/test_composev2.yml
  12. 30 27
      test/test_custom/test_defaults-location.yml
  13. 2 1
      test/test_custom/test_defaults.yml
  14. 2 1
      test/test_custom/test_location-per-vhost.yml
  15. 2 1
      test/test_custom/test_per-vhost.yml
  16. 2 1
      test/test_custom/test_proxy-wide.yml
  17. 17 15
      test/test_default-host.yml
  18. 3 0
      test/test_default-root-none.yml
  19. 1 1
      test/test_dockergen/test_dockergen_v2.yml
  20. 2 1
      test/test_dockergen/test_dockergen_v3.yml
  21. 2 0
      test/test_events.py
  22. 7 4
      test/test_events.yml
  23. 3 0
      test/test_fallback.data/custom-fallback.yml
  24. 6 0
      test/test_fallback.data/nodefault.yml
  25. 3 0
      test/test_fallback.data/nohttp-on-app.yml
  26. 4 0
      test/test_fallback.data/nohttp-with-missing-cert.yml
  27. 3 0
      test/test_fallback.data/nohttp.yml
  28. 3 0
      test/test_fallback.data/nohttps-on-app.yml
  29. 3 0
      test/test_fallback.data/nohttps.yml
  30. 6 0
      test/test_fallback.data/withdefault.yml
  31. 21 19
      test/test_headers/test_http.yml
  32. 27 25
      test/test_headers/test_https.yml
  33. 2 0
      test/test_http2/test_http2_global_disabled.yml
  34. 3 1
      test/test_http3/test_http3_global_disabled.yml
  35. 2 0
      test/test_http3/test_http3_global_enabled.yml
  36. 2 0
      test/test_http3/test_http3_vhost.yml
  37. 16 13
      test/test_http_port.yml
  38. 22 20
      test/test_internal/test_internal-per-vhost.yml
  39. 26 24
      test/test_internal/test_internal-per-vpath.yml
  40. 1 2
      test/test_ipv6.yml
  41. 24 22
      test/test_keepalive.yml
  42. 2 0
      test/test_loadbalancing.yml
  43. 2 0
      test/test_location-override.yml
  44. 17 14
      test/test_log_format.yml
  45. 13 11
      test/test_multiple-hosts.yml
  46. 1 1
      test/test_multiple-networks.yml
  47. 14 12
      test/test_multiple-ports/test_VIRTUAL_PORT-single-different-from-single-port.yml
  48. 16 13
      test/test_multiple-ports/test_VIRTUAL_PORT.yml
  49. 15 12
      test/test_multiple-ports/test_default-80.yml
  50. 13 11
      test/test_multiple-ports/test_single-port-not-80.yml
  51. 1 2
      test/test_nominal.yml
  52. 2 2
      test/test_raw-ip-vhost.yml
  53. 29 26
      test/test_server-down/test_load-balancing.yml
  54. 14 11
      test/test_server-down/test_no-server-down.yml
  55. 15 12
      test/test_server-down/test_server-down.yml
  56. 4 2
      test/test_ssl/test_dhparam.py
  57. 67 65
      test/test_ssl/test_dhparam.yml
  58. 49 46
      test/test_ssl/test_hsts.yml
  59. 18 15
      test/test_ssl/test_https_port.yml
  60. 15 13
      test/test_ssl/test_nohttp.yml
  61. 14 12
      test/test_ssl/test_nohttps.yml
  62. 15 13
      test/test_ssl/test_noredirect.yml
  63. 25 23
      test/test_ssl/test_virtual_path.yml
  64. 15 12
      test/test_ssl/test_wildcard.yml
  65. 16 14
      test/test_trust-downstream-proxy/test_default.yml
  66. 18 16
      test/test_trust-downstream-proxy/test_disabled.yml
  67. 18 16
      test/test_trust-downstream-proxy/test_enabled.yml
  68. 1 1
      test/test_upstream-name/test_predictable-name.yml
  69. 1 1
      test/test_upstream-name/test_sha1-name.yml
  70. 6 0
      test/test_vhost-empty-string.yml
  71. 1 1
      test/test_vhost-in-multiple-networks.yml
  72. 44 43
      test/test_virtual-path/test_custom_conf.yml
  73. 19 16
      test/test_virtual-path/test_forwarding.yml
  74. 37 34
      test/test_virtual-path/test_location_precedence.yml
  75. 1 0
      test/test_virtual-path/test_virtual_paths.py
  76. 39 37
      test/test_virtual-path/test_virtual_paths.yml
  77. 34 32
      test/test_wildcard_host.yml

+ 3 - 3
README.md

@@ -73,7 +73,7 @@ services:
 ```
 ```
 
 
 ```console
 ```console
-docker-compose up
+docker compose up
 curl -H "Host: whoami.example" localhost
 curl -H "Host: whoami.example" localhost
 ```
 ```
 
 
@@ -259,10 +259,10 @@ nginx-proxy can also be run as two separate containers using the [nginxproxy/doc
 
 
 You may want to do this to prevent having the docker socket bound to a publicly exposed container service.
 You may want to do this to prevent having the docker socket bound to a publicly exposed container service.
 
 
-You can demo this pattern with docker-compose:
+You can demo this pattern with docker compose:
 
 
 ```console
 ```console
-docker-compose --file docker-compose-separate-containers.yml up
+docker compose --file docker-compose-separate-containers.yml up
 curl -H "Host: whoami.example" localhost
 curl -H "Host: whoami.example" localhost
 ```
 ```
 
 

+ 2 - 1
docker-compose-separate-containers.yml

@@ -1,4 +1,5 @@
-version: '2'
+version: "2"
+
 services:
 services:
   nginx:
   nginx:
     image: nginx
     image: nginx

+ 2 - 1
docker-compose.yml

@@ -1,4 +1,5 @@
-version: '2'
+version: "2"
+
 services:
 services:
   nginx-proxy:
   nginx-proxy:
     image: nginxproxy/nginx-proxy
     image: nginxproxy/nginx-proxy

+ 3 - 3
test/README.md

@@ -48,11 +48,11 @@ This test suite uses [pytest](http://doc.pytest.org/en/latest/). The [conftest.p
 
 
 When using the `docker_compose` fixture in a test, pytest will try to find a yml file named after your test module filename. For instance, if your test module is `test_example.py`, then the `docker_compose` fixture will try to load a `test_example.yml` [docker compose file](https://docs.docker.com/compose/compose-file/).
 When using the `docker_compose` fixture in a test, pytest will try to find a yml file named after your test module filename. For instance, if your test module is `test_example.py`, then the `docker_compose` fixture will try to load a `test_example.yml` [docker compose file](https://docs.docker.com/compose/compose-file/).
 
 
-Once the docker compose file found, the fixture will remove all containers, run `docker-compose up`, and finally your test will be executed.
+Once the docker compose file found, the fixture will remove all containers, run `docker compose up`, and finally your test will be executed.
 
 
-The fixture will run the _docker-compose_ command with the `-f` option to load the given compose file. So you can test your docker compose file syntax by running it yourself with:
+The fixture will run the _docker compose_ command with the `-f` option to load the given compose file. So you can test your docker compose file syntax by running it yourself with:
 
 
-    docker-compose -f test_example.yml up -d
+    docker compose -f test_example.yml up -d
 
 
 In the case you are running pytest from within a docker container, the `docker_compose` fixture will make sure the container running pytest is attached to all docker networks. That way, your test will be able to reach any of them.
 In the case you are running pytest from within a docker container, the `docker_compose` fixture will make sure the container running pytest is attached to all docker networks. That way, your test will be able to reach any of them.
 
 

+ 8 - 8
test/conftest.py

@@ -301,19 +301,19 @@ def get_nginx_conf_from_container(container):
 
 
 
 
 def docker_compose_up(compose_file='docker-compose.yml'):
 def docker_compose_up(compose_file='docker-compose.yml'):
-    logging.info(f'docker-compose -f {compose_file} up -d')
+    logging.info(f'docker compose -f {compose_file} up -d')
     try:
     try:
-        subprocess.check_output(shlex.split(f'docker-compose -f {compose_file} up -d'), stderr=subprocess.STDOUT)
+        subprocess.check_output(shlex.split(f'docker compose -f {compose_file} up -d'), stderr=subprocess.STDOUT)
     except subprocess.CalledProcessError as e:
     except subprocess.CalledProcessError as e:
-        pytest.fail(f"Error while runninng 'docker-compose -f {compose_file} up -d':\n{e.output}", pytrace=False)
+        pytest.fail(f"Error while runninng 'docker compose -f {compose_file} up -d':\n{e.output}", pytrace=False)
 
 
 
 
 def docker_compose_down(compose_file='docker-compose.yml'):
 def docker_compose_down(compose_file='docker-compose.yml'):
-    logging.info(f'docker-compose -f {compose_file} down -v')
+    logging.info(f'docker compose -f {compose_file} down -v')
     try:
     try:
-        subprocess.check_output(shlex.split(f'docker-compose -f {compose_file} down -v'), stderr=subprocess.STDOUT)
+        subprocess.check_output(shlex.split(f'docker compose -f {compose_file} down -v'), stderr=subprocess.STDOUT)
     except subprocess.CalledProcessError as e:
     except subprocess.CalledProcessError as e:
-        pytest.fail(f"Error while runninng 'docker-compose -f {compose_file} down -v':\n{e.output}", pytrace=False)
+        pytest.fail(f"Error while runninng 'docker compose -f {compose_file} down -v':\n{e.output}", pytrace=False)
 
 
 
 
 def wait_for_nginxproxy_to_be_ready():
 def wait_for_nginxproxy_to_be_ready():
@@ -333,7 +333,7 @@ def wait_for_nginxproxy_to_be_ready():
 
 
 @pytest.fixture
 @pytest.fixture
 def docker_compose_file(request):
 def docker_compose_file(request):
-    """Fixture naming the docker-compose file to consider.
+    """Fixture naming the docker compose file to consider.
 
 
     If a YAML file exists with the same name as the test module (with the `.py` extension replaced
     If a YAML file exists with the same name as the test module (with the `.py` extension replaced
     with `.yml` or `.yaml`), use that.  Otherwise, use `docker-compose.yml` in the same directory
     with `.yml` or `.yaml`), use that.  Otherwise, use `docker-compose.yml` in the same directory
@@ -354,7 +354,7 @@ def docker_compose_file(request):
         docker_compose_file = default_file
         docker_compose_file = default_file
 
 
     if not os.path.isfile(docker_compose_file):
     if not os.path.isfile(docker_compose_file):
-        logging.error("Could not find any docker-compose file named either '{0}.yml', '{0}.yaml' or 'docker-compose.yml'".format(request.module.__name__))
+        logging.error("Could not find any docker compose file named either '{0}.yml', '{0}.yaml' or 'docker-compose.yml'".format(request.module.__name__))
 
 
     logging.debug(f"using docker compose file {docker_compose_file}")
     logging.debug(f"using docker compose file {docker_compose_file}")
     return docker_compose_file
     return docker_compose_file

+ 2 - 2
test/pytest.sh

@@ -19,8 +19,8 @@ docker build --pull -t nginx-proxy-tester \
   "${TESTDIR}/requirements" \
   "${TESTDIR}/requirements" \
   || exit 1
   || exit 1
 
 
-# run the nginx-proxy-tester container setting the correct value for the working dir in order for
-# docker-compose to work properly when run from within that container.
+# run the nginx-proxy-tester container setting the correct value for the working dir 
+# in order for docker compose to work properly when run from within that container.
 exec docker run --rm -it --name "nginx-proxy-pytest" \
 exec docker run --rm -it --name "nginx-proxy-pytest" \
   --volume "/var/run/docker.sock:/var/run/docker.sock" \
   --volume "/var/run/docker.sock:/var/run/docker.sock" \
   --volume "${DIR}:${DIR}" \
   --volume "${DIR}:${DIR}" \

+ 0 - 1
test/requirements/python-requirements.txt

@@ -1,5 +1,4 @@
 backoff==2.2.1
 backoff==2.2.1
-docker-compose==1.29.2
 docker==6.1.3
 docker==6.1.3
 pytest==7.4.3
 pytest==7.4.3
 requests==2.31.0
 requests==2.31.0

+ 15 - 13
test/stress_tests/test_deleted_cert/docker-compose.yml

@@ -1,15 +1,17 @@
-web:
-  image: web
-  expose:
-  - "81"
-  environment:
-    WEB_PORTS: 81
-    VIRTUAL_HOST: web.nginx-proxy
+version: "2"
 
 
+services:
+  web:
+    image: web
+    expose:
+      - "81"
+    environment:
+      WEB_PORTS: 81
+      VIRTUAL_HOST: web.nginx-proxy
 
 
-reverseproxy:
-  image: nginxproxy/nginx-proxy:test
-  container_name: reverseproxy
-  volumes:
-  - /var/run/docker.sock:/tmp/docker.sock:ro
-  - ./tmp_certs:/etc/nginx/certs:ro
+  reverseproxy:
+    image: nginxproxy/nginx-proxy:test
+    container_name: reverseproxy
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro
+      - ./tmp_certs:/etc/nginx/certs:ro

+ 0 - 1
test/stress_tests/test_unreachable_network/docker-compose.yml

@@ -32,4 +32,3 @@ services:
     environment:
     environment:
       WEB_PORTS: 82
       WEB_PORTS: 82
       VIRTUAL_HOST: webB.nginx-proxy
       VIRTUAL_HOST: webB.nginx-proxy
-

+ 22 - 20
test/test_DOCKER_HOST_unix_socket.yml

@@ -1,23 +1,25 @@
-web1:
-  image: web
-  expose:
-    - "81"
-  environment:
-    WEB_PORTS: 81
-    VIRTUAL_HOST: web1.nginx-proxy.tld
+version: "2"
 
 
-web2:
-  image: web
-  expose:
-    - "82"
-  environment:
-    WEB_PORTS: 82
-    VIRTUAL_HOST: web2.nginx-proxy.tld
+services:
+  web1:
+    image: web
+    expose:
+      - "81"
+    environment:
+      WEB_PORTS: 81
+      VIRTUAL_HOST: web1.nginx-proxy.tld
 
 
+  web2:
+    image: web
+    expose:
+      - "82"
+    environment:
+      WEB_PORTS: 82
+      VIRTUAL_HOST: web2.nginx-proxy.tld
 
 
-sut:
-  image: nginxproxy/nginx-proxy:test
-  volumes:
-    - /var/run/docker.sock:/f00.sock:ro
-  environment:
-    DOCKER_HOST: unix:///f00.sock
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/f00.sock:ro
+    environment:
+      DOCKER_HOST: unix:///f00.sock

+ 2 - 1
test/test_composev2.yml

@@ -1,4 +1,5 @@
-version: '2'
+version: "2"
+
 services:
 services:
   nginx-proxy:
   nginx-proxy:
     image: nginxproxy/nginx-proxy:test
     image: nginxproxy/nginx-proxy:test

+ 30 - 27
test/test_custom/test_defaults-location.yml

@@ -1,30 +1,33 @@
-nginx-proxy:
-  image: nginxproxy/nginx-proxy:test
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
-    - ./my_custom_proxy_settings.conf:/etc/nginx/vhost.d/default_location:ro
-    - ./my_custom_proxy_settings_bar.conf:/etc/nginx/vhost.d/web3.nginx-proxy.example_location:ro
+version: "2"
 
 
-web1:
-  image: web
-  expose:
-    - "81"
-  environment:
-    WEB_PORTS: 81
-    VIRTUAL_HOST: web1.nginx-proxy.example
+services:
+  nginx-proxy:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro
+      - ./my_custom_proxy_settings.conf:/etc/nginx/vhost.d/default_location:ro
+      - ./my_custom_proxy_settings_bar.conf:/etc/nginx/vhost.d/web3.nginx-proxy.example_location:ro
 
 
-web2:
-  image: web
-  expose:
-    - "82"
-  environment:
-    WEB_PORTS: 82
-    VIRTUAL_HOST: web2.nginx-proxy.example
+  web1:
+    image: web
+    expose:
+      - "81"
+    environment:
+      WEB_PORTS: 81
+      VIRTUAL_HOST: web1.nginx-proxy.example
 
 
-web3:
-  image: web
-  expose:
-    - "83"
-  environment:
-    WEB_PORTS: 83
-    VIRTUAL_HOST: web3.nginx-proxy.example
+  web2:
+    image: web
+    expose:
+      - "82"
+    environment:
+      WEB_PORTS: 82
+      VIRTUAL_HOST: web2.nginx-proxy.example
+
+  web3:
+    image: web
+    expose:
+      - "83"
+    environment:
+      WEB_PORTS: 83
+      VIRTUAL_HOST: web3.nginx-proxy.example

+ 2 - 1
test/test_custom/test_defaults.yml

@@ -1,4 +1,5 @@
-version: '2'
+version: "2"
+
 services:
 services:
   nginx-proxy:
   nginx-proxy:
     image: nginxproxy/nginx-proxy:test
     image: nginxproxy/nginx-proxy:test

+ 2 - 1
test/test_custom/test_location-per-vhost.yml

@@ -1,4 +1,5 @@
-version: '2'
+version: "2"
+
 services:
 services:
   nginx-proxy:
   nginx-proxy:
     image: nginxproxy/nginx-proxy:test
     image: nginxproxy/nginx-proxy:test

+ 2 - 1
test/test_custom/test_per-vhost.yml

@@ -1,4 +1,5 @@
-version: '2'
+version: "2"
+
 services:
 services:
   nginx-proxy:
   nginx-proxy:
     image: nginxproxy/nginx-proxy:test
     image: nginxproxy/nginx-proxy:test

+ 2 - 1
test/test_custom/test_proxy-wide.yml

@@ -1,4 +1,5 @@
-version: '2'
+version: "2"
+
 services:
 services:
   nginx-proxy:
   nginx-proxy:
     image: nginxproxy/nginx-proxy:test
     image: nginxproxy/nginx-proxy:test

+ 17 - 15
test/test_default-host.yml

@@ -1,17 +1,19 @@
-# GIVEN a webserver with VIRTUAL_HOST set to web1.tld
-web1:
-  image: web
-  expose:
-    - "81"
-  environment:
-    WEB_PORTS: 81
-    VIRTUAL_HOST: web1.tld
+version: "2"
 
 
+services:
+  # GIVEN a webserver with VIRTUAL_HOST set to web1.tld
+  web1:
+    image: web
+    expose:
+      - "81"
+    environment:
+      WEB_PORTS: 81
+      VIRTUAL_HOST: web1.tld
 
 
-# WHEN nginx-proxy runs with DEFAULT_HOST set to web1.tld
-sut:
-  image: nginxproxy/nginx-proxy:test
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
-  environment:
-    DEFAULT_HOST: web1.tld
+  # WHEN nginx-proxy runs with DEFAULT_HOST set to web1.tld
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro
+    environment:
+      DEFAULT_HOST: web1.tld

+ 3 - 0
test/test_default-root-none.yml

@@ -1,3 +1,5 @@
+version: "2"
+
 services:
 services:
   sut:
   sut:
     image: nginxproxy/nginx-proxy:test
     image: nginxproxy/nginx-proxy:test
@@ -5,6 +7,7 @@ services:
       - /var/run/docker.sock:/tmp/docker.sock:ro
       - /var/run/docker.sock:/tmp/docker.sock:ro
     environment:
     environment:
       DEFAULT_ROOT: none
       DEFAULT_ROOT: none
+
   web:
   web:
     image: web
     image: web
     expose:
     expose:

+ 1 - 1
test/test_dockergen/test_dockergen_v2.yml

@@ -1,4 +1,4 @@
-version: '2'
+version: "2"
 
 
 services:
 services:
   nginx:
   nginx:

+ 2 - 1
test/test_dockergen/test_dockergen_v3.yml

@@ -1,4 +1,5 @@
-version: '3'
+version: "3"
+
 services:
 services:
   nginx:
   nginx:
     image: nginx
     image: nginx

+ 2 - 0
test/test_events.py

@@ -22,6 +22,7 @@ def web1(docker_compose):
         },
         },
         ports={"81/tcp": None}
         ports={"81/tcp": None}
     )
     )
+    docker_compose.networks.get("test_default").connect(container)
     sleep(2)  # give it some time to initialize and for docker-gen to detect it
     sleep(2)  # give it some time to initialize and for docker-gen to detect it
     yield container
     yield container
     try:
     try:
@@ -46,6 +47,7 @@ def web2(docker_compose):
         },
         },
         ports={"82/tcp": None}
         ports={"82/tcp": None}
     )
     )
+    docker_compose.networks.get("test_default").connect(container)
     sleep(2)  # give it some time to initialize and for docker-gen to detect it
     sleep(2)  # give it some time to initialize and for docker-gen to detect it
     yield container
     yield container
     try:
     try:

+ 7 - 4
test/test_events.yml

@@ -1,4 +1,7 @@
-nginxproxy:
-  image: nginxproxy/nginx-proxy:test
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
+version: "2"
+
+services:
+  nginxproxy:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro

+ 3 - 0
test/test_fallback.data/custom-fallback.yml

@@ -1,9 +1,12 @@
+version: "2"
+
 services:
 services:
   sut:
   sut:
     image: nginxproxy/nginx-proxy:test
     image: nginxproxy/nginx-proxy:test
     volumes:
     volumes:
       - /var/run/docker.sock:/tmp/docker.sock:ro
       - /var/run/docker.sock:/tmp/docker.sock:ro
       - ./custom-fallback.conf:/etc/nginx/conf.d/zzz-custom-fallback.conf:ro
       - ./custom-fallback.conf:/etc/nginx/conf.d/zzz-custom-fallback.conf:ro
+
   http-only:
   http-only:
     image: web
     image: web
     expose:
     expose:

+ 6 - 0
test/test_fallback.data/nodefault.yml

@@ -1,9 +1,12 @@
+version: "2"
+
 services:
 services:
   sut:
   sut:
     image: nginxproxy/nginx-proxy:test
     image: nginxproxy/nginx-proxy:test
     volumes:
     volumes:
       - /var/run/docker.sock:/tmp/docker.sock:ro
       - /var/run/docker.sock:/tmp/docker.sock:ro
       - ./nodefault.certs:/etc/nginx/certs:ro
       - ./nodefault.certs:/etc/nginx/certs:ro
+
   https-and-http:
   https-and-http:
     image: web
     image: web
     expose:
     expose:
@@ -11,6 +14,7 @@ services:
     environment:
     environment:
       WEB_PORTS: "81"
       WEB_PORTS: "81"
       VIRTUAL_HOST: https-and-http.nginx-proxy.test
       VIRTUAL_HOST: https-and-http.nginx-proxy.test
+
   https-only:
   https-only:
     image: web
     image: web
     expose:
     expose:
@@ -19,6 +23,7 @@ services:
       WEB_PORTS: "82"
       WEB_PORTS: "82"
       VIRTUAL_HOST: https-only.nginx-proxy.test
       VIRTUAL_HOST: https-only.nginx-proxy.test
       HTTPS_METHOD: nohttp
       HTTPS_METHOD: nohttp
+
   http-only:
   http-only:
     image: web
     image: web
     expose:
     expose:
@@ -27,6 +32,7 @@ services:
       WEB_PORTS: "83"
       WEB_PORTS: "83"
       VIRTUAL_HOST: http-only.nginx-proxy.test
       VIRTUAL_HOST: http-only.nginx-proxy.test
       HTTPS_METHOD: nohttps
       HTTPS_METHOD: nohttps
+
   missing-cert:
   missing-cert:
     image: web
     image: web
     expose:
     expose:

+ 3 - 0
test/test_fallback.data/nohttp-on-app.yml

@@ -1,3 +1,5 @@
+version: "2"
+
 services:
 services:
   sut:
   sut:
     image: nginxproxy/nginx-proxy:test
     image: nginxproxy/nginx-proxy:test
@@ -6,6 +8,7 @@ services:
       - ./withdefault.certs:/etc/nginx/certs:ro
       - ./withdefault.certs:/etc/nginx/certs:ro
     environment:
     environment:
       HTTPS_METHOD: redirect
       HTTPS_METHOD: redirect
+
   https-only:
   https-only:
     image: web
     image: web
     expose:
     expose:

+ 4 - 0
test/test_fallback.data/nohttp-with-missing-cert.yml

@@ -1,3 +1,5 @@
+version: "2"
+
 services:
 services:
   sut:
   sut:
     image: nginxproxy/nginx-proxy:test
     image: nginxproxy/nginx-proxy:test
@@ -6,6 +8,7 @@ services:
       - ./withdefault.certs:/etc/nginx/certs:ro
       - ./withdefault.certs:/etc/nginx/certs:ro
     environment:
     environment:
       HTTPS_METHOD: nohttp
       HTTPS_METHOD: nohttp
+
   https-only:
   https-only:
     image: web
     image: web
     expose:
     expose:
@@ -13,6 +16,7 @@ services:
     environment:
     environment:
       WEB_PORTS: "82"
       WEB_PORTS: "82"
       VIRTUAL_HOST: https-only.nginx-proxy.test
       VIRTUAL_HOST: https-only.nginx-proxy.test
+
   missing-cert:
   missing-cert:
     image: web
     image: web
     expose:
     expose:

+ 3 - 0
test/test_fallback.data/nohttp.yml

@@ -1,3 +1,5 @@
+version: "2"
+
 services:
 services:
   sut:
   sut:
     image: nginxproxy/nginx-proxy:test
     image: nginxproxy/nginx-proxy:test
@@ -6,6 +8,7 @@ services:
       - ./withdefault.certs:/etc/nginx/certs:ro
       - ./withdefault.certs:/etc/nginx/certs:ro
     environment:
     environment:
       HTTPS_METHOD: nohttp
       HTTPS_METHOD: nohttp
+
   https-only:
   https-only:
     image: web
     image: web
     expose:
     expose:

+ 3 - 0
test/test_fallback.data/nohttps-on-app.yml

@@ -1,3 +1,5 @@
+version: "2"
+
 services:
 services:
   sut:
   sut:
     image: nginxproxy/nginx-proxy:test
     image: nginxproxy/nginx-proxy:test
@@ -5,6 +7,7 @@ services:
       - /var/run/docker.sock:/tmp/docker.sock:ro
       - /var/run/docker.sock:/tmp/docker.sock:ro
     environment:
     environment:
       HTTPS_METHOD: redirect
       HTTPS_METHOD: redirect
+
   http-only:
   http-only:
     image: web
     image: web
     expose:
     expose:

+ 3 - 0
test/test_fallback.data/nohttps.yml

@@ -1,3 +1,5 @@
+version: "2"
+
 services:
 services:
   sut:
   sut:
     image: nginxproxy/nginx-proxy:test
     image: nginxproxy/nginx-proxy:test
@@ -5,6 +7,7 @@ services:
       - /var/run/docker.sock:/tmp/docker.sock:ro
       - /var/run/docker.sock:/tmp/docker.sock:ro
     environment:
     environment:
       HTTPS_METHOD: nohttps
       HTTPS_METHOD: nohttps
+
   http-only:
   http-only:
     image: web
     image: web
     expose:
     expose:

+ 6 - 0
test/test_fallback.data/withdefault.yml

@@ -1,9 +1,12 @@
+version: "2"
+
 services:
 services:
   sut:
   sut:
     image: nginxproxy/nginx-proxy:test
     image: nginxproxy/nginx-proxy:test
     volumes:
     volumes:
       - /var/run/docker.sock:/tmp/docker.sock:ro
       - /var/run/docker.sock:/tmp/docker.sock:ro
       - ./withdefault.certs:/etc/nginx/certs:ro
       - ./withdefault.certs:/etc/nginx/certs:ro
+
   https-and-http:
   https-and-http:
     image: web
     image: web
     expose:
     expose:
@@ -11,6 +14,7 @@ services:
     environment:
     environment:
       WEB_PORTS: "81"
       WEB_PORTS: "81"
       VIRTUAL_HOST: https-and-http.nginx-proxy.test
       VIRTUAL_HOST: https-and-http.nginx-proxy.test
+
   https-only:
   https-only:
     image: web
     image: web
     expose:
     expose:
@@ -19,6 +23,7 @@ services:
       WEB_PORTS: "82"
       WEB_PORTS: "82"
       VIRTUAL_HOST: https-only.nginx-proxy.test
       VIRTUAL_HOST: https-only.nginx-proxy.test
       HTTPS_METHOD: nohttp
       HTTPS_METHOD: nohttp
+
   http-only:
   http-only:
     image: web
     image: web
     expose:
     expose:
@@ -27,6 +32,7 @@ services:
       WEB_PORTS: "83"
       WEB_PORTS: "83"
       VIRTUAL_HOST: http-only.nginx-proxy.test
       VIRTUAL_HOST: http-only.nginx-proxy.test
       HTTPS_METHOD: nohttps
       HTTPS_METHOD: nohttps
+
   missing-cert:
   missing-cert:
     image: web
     image: web
     expose:
     expose:

+ 21 - 19
test/test_headers/test_http.yml

@@ -1,22 +1,24 @@
-web:
-  image: web
-  expose:
-    - "80"
-  environment:
-    WEB_PORTS: 80
-    VIRTUAL_HOST: web.nginx-proxy.tld
+version: "2"
 
 
-web-server-tokens-off:
-  image: web
-  expose:
-    - "80"
-  environment:
-    WEB_PORTS: 80
-    VIRTUAL_HOST: web-server-tokens-off.nginx-proxy.tld
-    SERVER_TOKENS: "off"
+services:
+  web:
+    image: web
+    expose:
+      - "80"
+    environment:
+      WEB_PORTS: 80
+      VIRTUAL_HOST: web.nginx-proxy.tld
 
 
+  web-server-tokens-off:
+    image: web
+    expose:
+      - "80"
+    environment:
+      WEB_PORTS: 80
+      VIRTUAL_HOST: web-server-tokens-off.nginx-proxy.tld
+      SERVER_TOKENS: "off"
 
 
-sut:
-  image: nginxproxy/nginx-proxy:test
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro

+ 27 - 25
test/test_headers/test_https.yml

@@ -1,28 +1,30 @@
-web:
-  image: web
-  expose:
-    - "80"
-  environment:
-    WEB_PORTS: 80
-    VIRTUAL_HOST: web.nginx-proxy.tld
+version: "2"
 
 
-web-server-tokens-off:
-  image: web
-  expose:
-    - "80"
-  environment:
-    WEB_PORTS: 80
-    VIRTUAL_HOST: web-server-tokens-off.nginx-proxy.tld
-    SERVER_TOKENS: "off"
+services:
+  web:
+    image: web
+    expose:
+      - "80"
+    environment:
+      WEB_PORTS: 80
+      VIRTUAL_HOST: web.nginx-proxy.tld
 
 
+  web-server-tokens-off:
+    image: web
+    expose:
+      - "80"
+    environment:
+      WEB_PORTS: 80
+      VIRTUAL_HOST: web-server-tokens-off.nginx-proxy.tld
+      SERVER_TOKENS: "off"
 
 
-sut:
-  image: nginxproxy/nginx-proxy:test
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
-    - ./certs/web.nginx-proxy.tld.crt:/etc/nginx/certs/default.crt:ro
-    - ./certs/web.nginx-proxy.tld.key:/etc/nginx/certs/default.key:ro
-    - ./certs/web.nginx-proxy.tld.crt:/etc/nginx/certs/web.nginx-proxy.tld.crt:ro
-    - ./certs/web.nginx-proxy.tld.key:/etc/nginx/certs/web.nginx-proxy.tld.key:ro
-    - ./certs/web-server-tokens-off.nginx-proxy.tld.crt:/etc/nginx/certs/web-server-tokens-off.nginx-proxy.tld.crt:ro
-    - ./certs/web-server-tokens-off.nginx-proxy.tld.key:/etc/nginx/certs/web-server-tokens-off.nginx-proxy.tld.key:ro
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro
+      - ./certs/web.nginx-proxy.tld.crt:/etc/nginx/certs/default.crt:ro
+      - ./certs/web.nginx-proxy.tld.key:/etc/nginx/certs/default.key:ro
+      - ./certs/web.nginx-proxy.tld.crt:/etc/nginx/certs/web.nginx-proxy.tld.crt:ro
+      - ./certs/web.nginx-proxy.tld.key:/etc/nginx/certs/web.nginx-proxy.tld.key:ro
+      - ./certs/web-server-tokens-off.nginx-proxy.tld.crt:/etc/nginx/certs/web-server-tokens-off.nginx-proxy.tld.crt:ro
+      - ./certs/web-server-tokens-off.nginx-proxy.tld.key:/etc/nginx/certs/web-server-tokens-off.nginx-proxy.tld.key:ro

+ 2 - 0
test/test_http2/test_http2_global_disabled.yml

@@ -1,3 +1,5 @@
+version: "2"
+
 services:
 services:
   http2-global-disabled:
   http2-global-disabled:
     image: web
     image: web

+ 3 - 1
test/test_http3/test_http3_global_disabled.yml

@@ -1,3 +1,5 @@
+version: "2"
+
 services:
 services:
   http3-global-disabled:
   http3-global-disabled:
     image: web
     image: web
@@ -12,4 +14,4 @@ services:
     volumes:
     volumes:
       - /var/run/docker.sock:/tmp/docker.sock:ro
       - /var/run/docker.sock:/tmp/docker.sock:ro
     #environment:
     #environment:
-      #ENABLE_HTTP3: "false"    #Disabled by default
+    #ENABLE_HTTP3: "false"    #Disabled by default

+ 2 - 0
test/test_http3/test_http3_global_enabled.yml

@@ -1,3 +1,5 @@
+version: "2"
+
 services:
 services:
   http3-global-enabled:
   http3-global-enabled:
     image: web
     image: web

+ 2 - 0
test/test_http3/test_http3_vhost.yml

@@ -1,3 +1,5 @@
+version: "2"
+
 services:
 services:
   http3-vhost-enabled:
   http3-vhost-enabled:
     image: web
     image: web

+ 16 - 13
test/test_http_port.yml

@@ -1,14 +1,17 @@
-web1:
-  image: web
-  expose:
-    - "81"
-  environment:
-    WEB_PORTS: "81"
-    VIRTUAL_HOST: "*.nginx-proxy.tld"
+version: "2"
 
 
-sut:
-  image: nginxproxy/nginx-proxy:test
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
-  environment:
-    HTTP_PORT: 8080
+services:
+  web1:
+    image: web
+    expose:
+      - "81"
+    environment:
+      WEB_PORTS: "81"
+      VIRTUAL_HOST: "*.nginx-proxy.tld"
+
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro
+    environment:
+      HTTP_PORT: 8080

+ 22 - 20
test/test_internal/test_internal-per-vhost.yml

@@ -1,23 +1,25 @@
-web1:
-  image: web
-  expose:
-    - "81"
-  environment:
-    WEB_PORTS: 81
-    VIRTUAL_HOST: web1.nginx-proxy.example
-    NETWORK_ACCESS: internal
+version: "2"
 
 
-web2:
-  image: web
-  expose:
-    - "82"
-  environment:
-    WEB_PORTS: 82
-    VIRTUAL_HOST: web2.nginx-proxy.example
+services:
+  web1:
+    image: web
+    expose:
+      - "81"
+    environment:
+      WEB_PORTS: 81
+      VIRTUAL_HOST: web1.nginx-proxy.example
+      NETWORK_ACCESS: internal
 
 
-sut:
-  image: nginxproxy/nginx-proxy:test
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
-    - ./network_internal.conf:/etc/nginx/network_internal.conf:ro
+  web2:
+    image: web
+    expose:
+      - "82"
+    environment:
+      WEB_PORTS: 82
+      VIRTUAL_HOST: web2.nginx-proxy.example
 
 
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro
+      - ./network_internal.conf:/etc/nginx/network_internal.conf:ro

+ 26 - 24
test/test_internal/test_internal-per-vpath.yml

@@ -1,27 +1,29 @@
-web1:
-  image: web
-  expose:
-    - "81"
-  environment:
-    WEB_PORTS: 81
-    VIRTUAL_HOST: nginx-proxy.example
-    VIRTUAL_PATH: /web1/
-    VIRTUAL_DEST: /
-    NETWORK_ACCESS: internal
+version: "2"
 
 
-web2:
-  image: web
-  expose:
-    - "82"
-  environment:
-    WEB_PORTS: 82
-    VIRTUAL_HOST: nginx-proxy.example
-    VIRTUAL_PATH: /web2/
-    VIRTUAL_DEST: /
+services:
+  web1:
+    image: web
+    expose:
+      - "81"
+    environment:
+      WEB_PORTS: 81
+      VIRTUAL_HOST: nginx-proxy.example
+      VIRTUAL_PATH: /web1/
+      VIRTUAL_DEST: /
+      NETWORK_ACCESS: internal
 
 
-sut:
-  image: nginxproxy/nginx-proxy:test
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
-    - ./network_internal.conf:/etc/nginx/network_internal.conf:ro
+  web2:
+    image: web
+    expose:
+      - "82"
+    environment:
+      WEB_PORTS: 82
+      VIRTUAL_HOST: nginx-proxy.example
+      VIRTUAL_PATH: /web2/
+      VIRTUAL_DEST: /
 
 
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro
+      - ./network_internal.conf:/etc/nginx/network_internal.conf:ro

+ 1 - 2
test/test_ipv6.yml

@@ -1,4 +1,4 @@
-version: '2'
+version: "2"
 
 
 networks:
 networks:
   net1:
   net1:
@@ -28,7 +28,6 @@ services:
     networks:
     networks:
       - net1
       - net1
 
 
-
   sut:
   sut:
     image: nginxproxy/nginx-proxy:test
     image: nginxproxy/nginx-proxy:test
     volumes:
     volumes:

+ 24 - 22
test/test_keepalive.yml

@@ -1,25 +1,27 @@
-keepalive-disabled:
-  image: web
-  expose:
-    - "80"
-  environment:
-    WEB_PORTS: 80
-    VIRTUAL_HOST: keepalive-disabled.nginx-proxy.test
+version: "2"
 
 
-keepalive-enabled:
-  image: web
-  expose:
-    - "80"
-  environment:
-    WEB_PORTS: 80
-    VIRTUAL_HOST: keepalive-enabled.nginx-proxy.test
-  labels:
-    com.github.nginx-proxy.nginx-proxy.keepalive: "64"
+services:
+  keepalive-disabled:
+    image: web
+    expose:
+      - "80"
+    environment:
+      WEB_PORTS: 80
+      VIRTUAL_HOST: keepalive-disabled.nginx-proxy.test
 
 
+  keepalive-enabled:
+    image: web
+    expose:
+      - "80"
+    environment:
+      WEB_PORTS: 80
+      VIRTUAL_HOST: keepalive-enabled.nginx-proxy.test
+    labels:
+      com.github.nginx-proxy.nginx-proxy.keepalive: "64"
 
 
-sut:
-  image: nginxproxy/nginx-proxy:test
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
-  environment:
-    HTTPS_METHOD: nohttps
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro
+    environment:
+      HTTPS_METHOD: nohttps

+ 2 - 0
test/test_loadbalancing.yml

@@ -1,3 +1,5 @@
+version: "2"
+
 services:
 services:
   loadbalance-hash:
   loadbalance-hash:
     image: web
     image: web

+ 2 - 0
test/test_location-override.yml

@@ -1,3 +1,5 @@
+version: "2"
+
 services:
 services:
   sut:
   sut:
     image: nginxproxy/nginx-proxy:test
     image: nginxproxy/nginx-proxy:test

+ 17 - 14
test/test_log_format.yml

@@ -1,15 +1,18 @@
-web1:
-  image: web
-  expose:
-    - "81"
-  environment:
-    WEB_PORTS: 81
-    VIRTUAL_HOST: nginx-proxy.test
+version: "2"
 
 
-sut:
-  container_name: sut
-  image: nginxproxy/nginx-proxy:test
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
-  environment:
-    LOG_FORMAT: "$$remote_addr - $$remote_user [$$time_local] \"$$request\" $$status $$body_bytes_sent \"$$http_referer\" \"$$http_user_agent\" request_time=$$request_time $$upstream_response_time"
+services:
+  web1:
+    image: web
+    expose:
+      - "81"
+    environment:
+      WEB_PORTS: 81
+      VIRTUAL_HOST: nginx-proxy.test
+
+  sut:
+    container_name: sut
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro
+    environment:
+      LOG_FORMAT: '$$remote_addr - $$remote_user [$$time_local] "$$request" $$status $$body_bytes_sent "$$http_referer" "$$http_user_agent" request_time=$$request_time $$upstream_response_time'

+ 13 - 11
test/test_multiple-hosts.yml

@@ -1,13 +1,15 @@
-web:
-  image: web
-  expose:
-    - "81"
-  environment:
-    WEB_PORTS: 81
-    VIRTUAL_HOST: webA.nginx-proxy.tld,webB.nginx-proxy.tld
+version: "2"
 
 
+services:
+  web:
+    image: web
+    expose:
+      - "81"
+    environment:
+      WEB_PORTS: 81
+      VIRTUAL_HOST: webA.nginx-proxy.tld,webB.nginx-proxy.tld
 
 
-sut:
-  image: nginxproxy/nginx-proxy:test
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro

+ 1 - 1
test/test_multiple-networks.yml

@@ -1,4 +1,4 @@
-version: '2'
+version: "2"
 
 
 networks:
 networks:
   net1: {}
   net1: {}

+ 14 - 12
test/test_multiple-ports/test_VIRTUAL_PORT-single-different-from-single-port.yml

@@ -1,14 +1,16 @@
-web:
-  image: web
-  expose:
-    - "81"
-  environment:
-    WEB_PORTS: "81"
-    VIRTUAL_HOST: "web.nginx-proxy.tld"
-    VIRTUAL_PORT: "90"
+version: "2"
 
 
+services:
+  web:
+    image: web
+    expose:
+      - "81"
+    environment:
+      WEB_PORTS: "81"
+      VIRTUAL_HOST: "web.nginx-proxy.tld"
+      VIRTUAL_PORT: "90"
 
 
-sut:
-  image: nginxproxy/nginx-proxy:test
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro

+ 16 - 13
test/test_multiple-ports/test_VIRTUAL_PORT.yml

@@ -1,14 +1,17 @@
-web:
-  image: web
-  expose:
-    - "80"
-    - "90"
-  environment:
-    WEB_PORTS: "80 90"
-    VIRTUAL_HOST: "web.nginx-proxy.tld"
-    VIRTUAL_PORT: 90
+version: "2"
 
 
-sut:
-  image: nginxproxy/nginx-proxy:test
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
+services:
+  web:
+    image: web
+    expose:
+      - "80"
+      - "90"
+    environment:
+      WEB_PORTS: "80 90"
+      VIRTUAL_HOST: "web.nginx-proxy.tld"
+      VIRTUAL_PORT: 90
+
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro

+ 15 - 12
test/test_multiple-ports/test_default-80.yml

@@ -1,13 +1,16 @@
-web:
-  image: web
-  expose:
-    - "80"
-    - "81"
-  environment:
-    WEB_PORTS: "80 81"
-    VIRTUAL_HOST: "web.nginx-proxy.tld"
+version: "2"
 
 
-sut:
-  image: nginxproxy/nginx-proxy:test
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
+services:
+  web:
+    image: web
+    expose:
+      - "80"
+      - "81"
+    environment:
+      WEB_PORTS: "80 81"
+      VIRTUAL_HOST: "web.nginx-proxy.tld"
+
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro

+ 13 - 11
test/test_multiple-ports/test_single-port-not-80.yml

@@ -1,13 +1,15 @@
-web:
-  image: web
-  expose:
-    - "81"
-  environment:
-    WEB_PORTS: "81"
-    VIRTUAL_HOST: "web.nginx-proxy.tld"
+version: "2"
 
 
+services:
+  web:
+    image: web
+    expose:
+      - "81"
+    environment:
+      WEB_PORTS: "81"
+      VIRTUAL_HOST: "web.nginx-proxy.tld"
 
 
-sut:
-  image: nginxproxy/nginx-proxy:test
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro

+ 1 - 2
test/test_nominal.yml

@@ -1,4 +1,4 @@
-version: '2'
+version: "2"
 
 
 networks:
 networks:
   net1:
   net1:
@@ -28,7 +28,6 @@ services:
     networks:
     networks:
       - net1
       - net1
 
 
-
   sut:
   sut:
     image: nginxproxy/nginx-proxy:test
     image: nginxproxy/nginx-proxy:test
     volumes:
     volumes:

+ 2 - 2
test/test_raw-ip-vhost.yml

@@ -1,4 +1,4 @@
-version: '2'
+version: "2"
 
 
 networks:
 networks:
   net1:
   net1:
@@ -6,7 +6,7 @@ networks:
     ipam:
     ipam:
       config:
       config:
         - subnet: 172.20.0.0/16
         - subnet: 172.20.0.0/16
-        - subnet: fd00::/80  
+        - subnet: fd00::/80
 
 
 services:
 services:
   web1:
   web1:

+ 29 - 26
test/test_server-down/test_load-balancing.yml

@@ -1,29 +1,32 @@
-web1:
-  image: web
-  expose:
-    - "81"
-  environment:
-    WEB_PORTS: 81
-    VIRTUAL_HOST: web.nginx-proxy.tld
+version: "2"
 
 
-web2:
-  image: web
-  expose:
-    - "82"
-  environment:
-    WEB_PORTS: 83
-    VIRTUAL_HOST: web.nginx-proxy.tld
+services:
+  web1:
+    image: web
+    expose:
+      - "81"
+    environment:
+      WEB_PORTS: 81
+      VIRTUAL_HOST: web.nginx-proxy.tld
 
 
-web3:
-  image: web
-  expose:
-    - "83"
-  environment:
-    WEB_PORTS: 83
-    VIRTUAL_HOST: web.nginx-proxy.tld
-  net: "none"
+  web2:
+    image: web
+    expose:
+      - "82"
+    environment:
+      WEB_PORTS: 83
+      VIRTUAL_HOST: web.nginx-proxy.tld
 
 
-sut:
-  image: nginxproxy/nginx-proxy:test
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
+  web3:
+    image: web
+    expose:
+      - "83"
+    environment:
+      WEB_PORTS: 83
+      VIRTUAL_HOST: web.nginx-proxy.tld
+    network_mode: "none"
+
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro

+ 14 - 11
test/test_server-down/test_no-server-down.yml

@@ -1,12 +1,15 @@
-web:
-  image: web
-  expose:
-    - "81"
-  environment:
-    WEB_PORTS: 81
-    VIRTUAL_HOST: web.nginx-proxy.tld
+version: "2"
 
 
-sut:
-  image: nginxproxy/nginx-proxy:test
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
+services:
+  web:
+    image: web
+    expose:
+      - "81"
+    environment:
+      WEB_PORTS: 81
+      VIRTUAL_HOST: web.nginx-proxy.tld
+
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro

+ 15 - 12
test/test_server-down/test_server-down.yml

@@ -1,13 +1,16 @@
-web:
-  image: web
-  expose:
-    - "81"
-  environment:
-    WEB_PORTS: 81
-    VIRTUAL_HOST: web.nginx-proxy.tld
-  net: "none"
+version: "2"
 
 
-sut:
-  image: nginxproxy/nginx-proxy:test
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
+services:
+  web:
+    image: web
+    expose:
+      - "81"
+    environment:
+      WEB_PORTS: 81
+      VIRTUAL_HOST: web.nginx-proxy.tld
+    network_mode: "none"
+
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro

+ 4 - 2
test/test_ssl/test_dhparam.py

@@ -3,6 +3,7 @@ import subprocess
 
 
 import backoff
 import backoff
 import docker
 import docker
+import pprint
 import pytest
 import pytest
 
 
 docker_client = docker.from_env()
 docker_client = docker.from_env()
@@ -60,7 +61,8 @@ def require_openssl(required_version):
 
 
 @require_openssl("1.0.2")
 @require_openssl("1.0.2")
 def negotiate_cipher(sut_container, additional_params='', grep='Cipher is'):
 def negotiate_cipher(sut_container, additional_params='', grep='Cipher is'):
-    host = f"{sut_container.attrs['NetworkSettings']['IPAddress']}:443"
+    sut_container.reload()
+    host = f"{sut_container.attrs['NetworkSettings']['Networks']['test_ssl_default']['IPAddress']}:443"
 
 
     try:
     try:
         # Enforce TLS 1.2 as newer versions don't support custom dhparam or ciphersuite preference.
         # Enforce TLS 1.2 as newer versions don't support custom dhparam or ciphersuite preference.
@@ -77,7 +79,7 @@ def negotiate_cipher(sut_container, additional_params='', grep='Cipher is'):
     except subprocess.CalledProcessError as e:
     except subprocess.CalledProcessError as e:
         # Output a more helpful error, the original exception in this case isn't that helpful.
         # Output a more helpful error, the original exception in this case isn't that helpful.
         # `from None` to ignore undesired output from exception chaining.
         # `from None` to ignore undesired output from exception chaining.
-        raise Exception("Failed to process CLI request:\n" + e.stderr) from None
+        raise Exception(f"Failed to process CLI request openssl s_client -connect {host} -tls1_2 {additional_params}:\n" + e.stderr) from None
 
 
 
 
 # The default `dh_bits` can vary due to configuration.
 # The default `dh_bits` can vary due to configuration.

+ 67 - 65
test/test_ssl/test_dhparam.yml

@@ -1,73 +1,75 @@
-web5:
-  image: web
-  expose:
-    - "85"
-  environment:
-    WEB_PORTS: "85"
-    VIRTUAL_HOST: "web5.nginx-proxy.tld"
+version: "2"
 
 
-# Intended for testing with `dh-file` container.
-# VIRTUAL_HOST is paired with site-specific DH param file.
-# DEFAULT_HOST is required to avoid defaulting to web2,
-# if not specifying FQDN (`-servername`) in openssl queries.
-web2:
-  image: web
-  expose:
-    - "85"
-  environment:
-    WEB_PORTS: "85"
-    VIRTUAL_HOST: "web2.nginx-proxy.tld"
+services:
+  web5:
+    image: web
+    expose:
+      - "85"
+    environment:
+      WEB_PORTS: "85"
+      VIRTUAL_HOST: "web5.nginx-proxy.tld"
 
 
+  # Intended for testing with `dh-file` container.
+  # VIRTUAL_HOST is paired with site-specific DH param file.
+  # DEFAULT_HOST is required to avoid defaulting to web2,
+  # if not specifying FQDN (`-servername`) in openssl queries.
+  web2:
+    image: web
+    expose:
+      - "85"
+    environment:
+      WEB_PORTS: "85"
+      VIRTUAL_HOST: "web2.nginx-proxy.tld"
 
 
-# sut - System Under Test
-# `docker.sock` required for functionality
-# `certs` required to enable HTTPS via template
-with_default_group:
-  container_name: dh-default
-  image: &img-nginxproxy nginxproxy/nginx-proxy:test
-  environment: &env-common
-    - &default-host DEFAULT_HOST=web5.nginx-proxy.tld
-  volumes: &vols-common
-    - &docker-sock /var/run/docker.sock:/tmp/docker.sock:ro
-    - &nginx-certs ./certs:/etc/nginx/certs:ro
+  # sut - System Under Test
+  # `docker.sock` required for functionality
+  # `certs` required to enable HTTPS via template
+  with_default_group:
+    container_name: dh-default
+    image: &img-nginxproxy nginxproxy/nginx-proxy:test
+    environment: &env-common
+      - &default-host DEFAULT_HOST=web5.nginx-proxy.tld
+    volumes: &vols-common
+      - &docker-sock /var/run/docker.sock:/tmp/docker.sock:ro
+      - &nginx-certs ./certs:/etc/nginx/certs:ro
 
 
-with_alternative_group:
-  container_name: dh-env
-  environment:
-    - DHPARAM_BITS=3072
-    - *default-host
-  image: *img-nginxproxy
-  volumes: *vols-common
+  with_alternative_group:
+    container_name: dh-env
+    environment:
+      - DHPARAM_BITS=3072
+      - *default-host
+    image: *img-nginxproxy
+    volumes: *vols-common
 
 
-with_invalid_group:
-  container_name: invalid-group-1024
-  environment:
-    - DHPARAM_BITS=1024
-    - *default-host
-  image: *img-nginxproxy
-  volumes: *vols-common
+  with_invalid_group:
+    container_name: invalid-group-1024
+    environment:
+      - DHPARAM_BITS=1024
+      - *default-host
+    image: *img-nginxproxy
+    volumes: *vols-common
 
 
-with_custom_file:
-  container_name: dh-file
-  image: *img-nginxproxy
-  environment: *env-common
-  volumes:
-    - *docker-sock
-    - *nginx-certs
-    - ../../app/dhparam/ffdhe3072.pem:/etc/nginx/dhparam/dhparam.pem:ro
+  with_custom_file:
+    container_name: dh-file
+    image: *img-nginxproxy
+    environment: *env-common
+    volumes:
+      - *docker-sock
+      - *nginx-certs
+      - ../../app/dhparam/ffdhe3072.pem:/etc/nginx/dhparam/dhparam.pem:ro
 
 
-with_skip:
-  container_name: dh-skip
-  environment:
-    - DHPARAM_SKIP=true
-    - *default-host
-  image: *img-nginxproxy
-  volumes: *vols-common
+  with_skip:
+    container_name: dh-skip
+    environment:
+      - DHPARAM_SKIP=true
+      - *default-host
+    image: *img-nginxproxy
+    volumes: *vols-common
 
 
-with_skip_backward:
-  container_name: dh-skip-backward
-  environment:
-    - DHPARAM_GENERATION=false
-    - *default-host
-  image: *img-nginxproxy
-  volumes: *vols-common
+  with_skip_backward:
+    container_name: dh-skip-backward
+    environment:
+      - DHPARAM_GENERATION=false
+      - *default-host
+    image: *img-nginxproxy
+    volumes: *vols-common

+ 49 - 46
test/test_ssl/test_hsts.yml

@@ -1,51 +1,54 @@
-web1:
-  image: web
-  expose:
-    - "81"
-  environment:
-    WEB_PORTS: "81"
-    VIRTUAL_HOST: "web1.nginx-proxy.tld"
+version: "2"
 
 
-web2:
-  image: web
-  expose:
-    - "81"
-  environment:
-    WEB_PORTS: "81"
-    VIRTUAL_HOST: "web2.nginx-proxy.tld"
-    HSTS: "off"
+services:
+  web1:
+    image: web
+    expose:
+      - "81"
+    environment:
+      WEB_PORTS: "81"
+      VIRTUAL_HOST: "web1.nginx-proxy.tld"
 
 
-web3:
-  image: web
-  expose:
-    - "81"
-  environment:
-    WEB_PORTS: "81"
-    VIRTUAL_HOST: "web3.nginx-proxy.tld"
-    HSTS: "max-age=86400; includeSubDomains; preload"
+  web2:
+    image: web
+    expose:
+      - "81"
+    environment:
+      WEB_PORTS: "81"
+      VIRTUAL_HOST: "web2.nginx-proxy.tld"
+      HSTS: "off"
 
 
-web4:
-  image: web
-  expose:
-    - "81"
-  environment:
-    WEB_PORTS: "81"
-    VIRTUAL_HOST: "web4.nginx-proxy.tld"
-    HSTS: "off"
-    HTTPS_METHOD: "noredirect"
+  web3:
+    image: web
+    expose:
+      - "81"
+    environment:
+      WEB_PORTS: "81"
+      VIRTUAL_HOST: "web3.nginx-proxy.tld"
+      HSTS: "max-age=86400; includeSubDomains; preload"
 
 
-web5:
-  image: web
-  expose:
-    - "81"
-  environment:
-    WEB_PORTS: "81"
-    VIRTUAL_HOST: http3-vhost-enabled.nginx-proxy.tld
-  labels:
-    com.github.nginx-proxy.nginx-proxy.http3.enable: "true"
+  web4:
+    image: web
+    expose:
+      - "81"
+    environment:
+      WEB_PORTS: "81"
+      VIRTUAL_HOST: "web4.nginx-proxy.tld"
+      HSTS: "off"
+      HTTPS_METHOD: "noredirect"
 
 
-sut:
-  image: nginxproxy/nginx-proxy:test
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
-    - ./certs:/etc/nginx/certs:ro
+  web5:
+    image: web
+    expose:
+      - "81"
+    environment:
+      WEB_PORTS: "81"
+      VIRTUAL_HOST: http3-vhost-enabled.nginx-proxy.tld
+    labels:
+      com.github.nginx-proxy.nginx-proxy.http3.enable: "true"
+
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro
+      - ./certs:/etc/nginx/certs:ro

+ 18 - 15
test/test_ssl/test_https_port.yml

@@ -1,16 +1,19 @@
-web1:
-  image: web
-  expose:
-    - "81"
-  environment:
-    WEB_PORTS: "81"
-    VIRTUAL_HOST: "*.nginx-proxy.tld"
+version: "2"
 
 
-sut:
-  image: nginxproxy/nginx-proxy:test
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
-    - ./certs:/etc/nginx/certs:ro
-  environment:
-    HTTP_PORT: 8080
-    HTTPS_PORT: 8443
+services:
+  web1:
+    image: web
+    expose:
+      - "81"
+    environment:
+      WEB_PORTS: "81"
+      VIRTUAL_HOST: "*.nginx-proxy.tld"
+
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro
+      - ./certs:/etc/nginx/certs:ro
+    environment:
+      HTTP_PORT: 8080
+      HTTPS_PORT: 8443

+ 15 - 13
test/test_ssl/test_nohttp.yml

@@ -1,15 +1,17 @@
-web2:
-  image: web
-  expose:
-    - "82"
-  environment:
-    WEB_PORTS: "82"
-    VIRTUAL_HOST: "web2.nginx-proxy.tld"
-    HTTPS_METHOD: nohttp
+version: "2"
 
 
+services:
+  web2:
+    image: web
+    expose:
+      - "82"
+    environment:
+      WEB_PORTS: "82"
+      VIRTUAL_HOST: "web2.nginx-proxy.tld"
+      HTTPS_METHOD: nohttp
 
 
-sut:
-  image: nginxproxy/nginx-proxy:test
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
-    - ./certs:/etc/nginx/certs:ro
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro
+      - ./certs:/etc/nginx/certs:ro

+ 14 - 12
test/test_ssl/test_nohttps.yml

@@ -1,14 +1,16 @@
-web:
-  image: web
-  expose:
-    - "83"
-  environment:
-    WEB_PORTS: "83"
-    VIRTUAL_HOST: "web.nginx-proxy.tld"
-    HTTPS_METHOD: nohttps
+version: "2"
 
 
+services:
+  web:
+    image: web
+    expose:
+      - "83"
+    environment:
+      WEB_PORTS: "83"
+      VIRTUAL_HOST: "web.nginx-proxy.tld"
+      HTTPS_METHOD: nohttps
 
 
-sut:
-  image: nginxproxy/nginx-proxy:test
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro

+ 15 - 13
test/test_ssl/test_noredirect.yml

@@ -1,15 +1,17 @@
-web3:
-  image: web
-  expose:
-    - "83"
-  environment:
-    WEB_PORTS: "83"
-    VIRTUAL_HOST: "web3.nginx-proxy.tld"
-    HTTPS_METHOD: noredirect
+version: "2"
 
 
+services:
+  web3:
+    image: web
+    expose:
+      - "83"
+    environment:
+      WEB_PORTS: "83"
+      VIRTUAL_HOST: "web3.nginx-proxy.tld"
+      HTTPS_METHOD: noredirect
 
 
-sut:
-  image: nginxproxy/nginx-proxy:test
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
-    - ./certs:/etc/nginx/certs:ro
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro
+      - ./certs:/etc/nginx/certs:ro

+ 25 - 23
test/test_ssl/test_virtual_path.yml

@@ -1,26 +1,28 @@
-web1:
-  image: web
-  expose:
-    - "81"
-  environment:
-    WEB_PORTS: "81"
-    VIRTUAL_HOST: "www.nginx-proxy.tld"
-    VIRTUAL_PATH: "/web1/"
-    VIRTUAL_DEST: "/"
+version: "2"
 
 
-web2:
-  image: web
-  expose:
-    - "82"
-  environment:
-    WEB_PORTS: "82"
-    VIRTUAL_HOST: "www.nginx-proxy.tld"
-    VIRTUAL_PATH: "/web2/"
-    VIRTUAL_DEST: "/"
+services:
+  web1:
+    image: web
+    expose:
+      - "81"
+    environment:
+      WEB_PORTS: "81"
+      VIRTUAL_HOST: "www.nginx-proxy.tld"
+      VIRTUAL_PATH: "/web1/"
+      VIRTUAL_DEST: "/"
 
 
-sut:
-  image: nginxproxy/nginx-proxy:test
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
-    - ./certs:/etc/nginx/certs:ro
+  web2:
+    image: web
+    expose:
+      - "82"
+    environment:
+      WEB_PORTS: "82"
+      VIRTUAL_HOST: "www.nginx-proxy.tld"
+      VIRTUAL_PATH: "/web2/"
+      VIRTUAL_DEST: "/"
 
 
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro
+      - ./certs:/etc/nginx/certs:ro

+ 15 - 12
test/test_ssl/test_wildcard.yml

@@ -1,13 +1,16 @@
-web1:
-  image: web
-  expose:
-    - "81"
-  environment:
-    WEB_PORTS: "81"
-    VIRTUAL_HOST: "*.nginx-proxy.tld"
+version: "2"
 
 
-sut:
-  image: nginxproxy/nginx-proxy:test
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
-    - ./certs:/etc/nginx/certs:ro
+services:
+  web1:
+    image: web
+    expose:
+      - "81"
+    environment:
+      WEB_PORTS: "81"
+      VIRTUAL_HOST: "*.nginx-proxy.tld"
+
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro
+      - ./certs:/etc/nginx/certs:ro

+ 16 - 14
test/test_trust-downstream-proxy/test_default.yml

@@ -1,16 +1,18 @@
-web:
-  image: web
-  expose:
-    - "80"
-  environment:
-    WEB_PORTS: 80
-    VIRTUAL_HOST: web.nginx-proxy.tld
-    HTTPS_METHOD: noredirect
+version: "2"
 
 
+services:
+  web:
+    image: web
+    expose:
+      - "80"
+    environment:
+      WEB_PORTS: 80
+      VIRTUAL_HOST: web.nginx-proxy.tld
+      HTTPS_METHOD: noredirect
 
 
-sut:
-  image: nginxproxy/nginx-proxy:test
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
-    - ./certs/web.nginx-proxy.tld.crt:/etc/nginx/certs/web.nginx-proxy.tld.crt:ro
-    - ./certs/web.nginx-proxy.tld.key:/etc/nginx/certs/web.nginx-proxy.tld.key:ro
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro
+      - ./certs/web.nginx-proxy.tld.crt:/etc/nginx/certs/web.nginx-proxy.tld.crt:ro
+      - ./certs/web.nginx-proxy.tld.key:/etc/nginx/certs/web.nginx-proxy.tld.key:ro

+ 18 - 16
test/test_trust-downstream-proxy/test_disabled.yml

@@ -1,18 +1,20 @@
-web:
-  image: web
-  expose:
-    - "80"
-  environment:
-    WEB_PORTS: 80
-    VIRTUAL_HOST: web.nginx-proxy.tld
-    HTTPS_METHOD: noredirect
+version: "2"
 
 
+services:
+  web:
+    image: web
+    expose:
+      - "80"
+    environment:
+      WEB_PORTS: 80
+      VIRTUAL_HOST: web.nginx-proxy.tld
+      HTTPS_METHOD: noredirect
 
 
-sut:
-  image: nginxproxy/nginx-proxy:test
-  environment:
-    TRUST_DOWNSTREAM_PROXY: "false"
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
-    - ./certs/web.nginx-proxy.tld.crt:/etc/nginx/certs/web.nginx-proxy.tld.crt:ro
-    - ./certs/web.nginx-proxy.tld.key:/etc/nginx/certs/web.nginx-proxy.tld.key:ro
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    environment:
+      TRUST_DOWNSTREAM_PROXY: "false"
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro
+      - ./certs/web.nginx-proxy.tld.crt:/etc/nginx/certs/web.nginx-proxy.tld.crt:ro
+      - ./certs/web.nginx-proxy.tld.key:/etc/nginx/certs/web.nginx-proxy.tld.key:ro

+ 18 - 16
test/test_trust-downstream-proxy/test_enabled.yml

@@ -1,18 +1,20 @@
-web:
-  image: web
-  expose:
-    - "80"
-  environment:
-    WEB_PORTS: 80
-    VIRTUAL_HOST: web.nginx-proxy.tld
-    HTTPS_METHOD: noredirect
+version: "2"
 
 
+services:
+  web:
+    image: web
+    expose:
+      - "80"
+    environment:
+      WEB_PORTS: 80
+      VIRTUAL_HOST: web.nginx-proxy.tld
+      HTTPS_METHOD: noredirect
 
 
-sut:
-  image: nginxproxy/nginx-proxy:test
-  environment:
-    TRUST_DOWNSTREAM_PROXY: "true"
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
-    - ./certs/web.nginx-proxy.tld.crt:/etc/nginx/certs/web.nginx-proxy.tld.crt:ro
-    - ./certs/web.nginx-proxy.tld.key:/etc/nginx/certs/web.nginx-proxy.tld.key:ro
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    environment:
+      TRUST_DOWNSTREAM_PROXY: "true"
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro
+      - ./certs/web.nginx-proxy.tld.crt:/etc/nginx/certs/web.nginx-proxy.tld.crt:ro
+      - ./certs/web.nginx-proxy.tld.key:/etc/nginx/certs/web.nginx-proxy.tld.key:ro

+ 1 - 1
test/test_upstream-name/test_predictable-name.yml

@@ -1,4 +1,4 @@
-version: '2'
+version: "2"
 
 
 services:
 services:
   web:
   web:

+ 1 - 1
test/test_upstream-name/test_sha1-name.yml

@@ -1,4 +1,4 @@
-version: '2'
+version: "2"
 
 
 services:
 services:
   web:
   web:

+ 6 - 0
test/test_vhost-empty-string.yml

@@ -1,8 +1,11 @@
+version: "2"
+
 services:
 services:
   sut:
   sut:
     image: nginxproxy/nginx-proxy:test
     image: nginxproxy/nginx-proxy:test
     volumes:
     volumes:
       - /var/run/docker.sock:/tmp/docker.sock:ro
       - /var/run/docker.sock:/tmp/docker.sock:ro
+
   web1:
   web1:
     image: web
     image: web
     expose:
     expose:
@@ -11,6 +14,7 @@ services:
       WEB_PORTS: "81"
       WEB_PORTS: "81"
       # The space is intentional (should be trimmed).
       # The space is intentional (should be trimmed).
       VIRTUAL_HOST: " "
       VIRTUAL_HOST: " "
+
   web2:
   web2:
     image: web
     image: web
     expose:
     expose:
@@ -19,6 +23,7 @@ services:
       WEB_PORTS: "82"
       WEB_PORTS: "82"
       # The space is intentional (should be trimmed).
       # The space is intentional (should be trimmed).
       VIRTUAL_HOST: "web2.nginx-proxy.test ,"
       VIRTUAL_HOST: "web2.nginx-proxy.test ,"
+
   web3:
   web3:
     image: web
     image: web
     expose:
     expose:
@@ -27,6 +32,7 @@ services:
       WEB_PORTS: "83"
       WEB_PORTS: "83"
       # The space is intentional (should be trimmed).
       # The space is intentional (should be trimmed).
       VIRTUAL_HOST: " ,web3.nginx-proxy.test"
       VIRTUAL_HOST: " ,web3.nginx-proxy.test"
+
   web4:
   web4:
     image: web
     image: web
     expose:
     expose:

+ 1 - 1
test/test_vhost-in-multiple-networks.yml

@@ -1,4 +1,4 @@
-version: '2'
+version: "2"
 
 
 networks:
 networks:
   net1: {}
   net1: {}

+ 44 - 43
test/test_virtual-path/test_custom_conf.yml

@@ -1,48 +1,49 @@
+version: "2"
 
 
-foo:
-  image: web
-  expose:
-    - "42"
-  environment:
-    WEB_PORTS: "42"
-    VIRTUAL_HOST: "foo.nginx-proxy.test"
+services:
+  foo:
+    image: web
+    expose:
+      - "42"
+    environment:
+      WEB_PORTS: "42"
+      VIRTUAL_HOST: "foo.nginx-proxy.test"
 
 
-web1:
-  image: web
-  expose:
-    - "81"
-  environment:
-    WEB_PORTS: "81"
-    VIRTUAL_HOST: "nginx-proxy.test"
-    VIRTUAL_PATH: "/web1/"
-    VIRTUAL_DEST: "/"
+  web1:
+    image: web
+    expose:
+      - "81"
+    environment:
+      WEB_PORTS: "81"
+      VIRTUAL_HOST: "nginx-proxy.test"
+      VIRTUAL_PATH: "/web1/"
+      VIRTUAL_DEST: "/"
 
 
-web2:
-  image: web
-  expose:
-    - "82"
-  environment:
-    WEB_PORTS: "82"
-    VIRTUAL_HOST: "nginx-proxy.test"
-    VIRTUAL_PATH: "/web2/"
-    VIRTUAL_DEST: "/"
+  web2:
+    image: web
+    expose:
+      - "82"
+    environment:
+      WEB_PORTS: "82"
+      VIRTUAL_HOST: "nginx-proxy.test"
+      VIRTUAL_PATH: "/web2/"
+      VIRTUAL_DEST: "/"
 
 
-web3:
-  image: web
-  expose:
-    - "83"
-  environment:
-    WEB_PORTS: "83"
-    VIRTUAL_HOST: "nginx-proxy.test"
-    VIRTUAL_PATH: "~ ^/(web3|alt)/"
-
-sut:
-  image: nginxproxy/nginx-proxy:test
-  environment:
-    DEFAULT_ROOT: 418
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
-    - ./foo.conf:/etc/nginx/vhost.d/foo.nginx-proxy.test:ro
-    - ./bar.conf:/etc/nginx/vhost.d/nginx-proxy.test_918d687a929083edd0c7224ee2293e0e7c062ab4_location:ro
-    - ./alternate.conf:/etc/nginx/vhost.d/nginx-proxy.test_7fb22b74bbdf907425dbbad18e4462565cada230_location:ro
+  web3:
+    image: web
+    expose:
+      - "83"
+    environment:
+      WEB_PORTS: "83"
+      VIRTUAL_HOST: "nginx-proxy.test"
+      VIRTUAL_PATH: "~ ^/(web3|alt)/"
 
 
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    environment:
+      DEFAULT_ROOT: 418
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro
+      - ./foo.conf:/etc/nginx/vhost.d/foo.nginx-proxy.test:ro
+      - ./bar.conf:/etc/nginx/vhost.d/nginx-proxy.test_918d687a929083edd0c7224ee2293e0e7c062ab4_location:ro
+      - ./alternate.conf:/etc/nginx/vhost.d/nginx-proxy.test_7fb22b74bbdf907425dbbad18e4462565cada230_location:ro

+ 19 - 16
test/test_virtual-path/test_forwarding.yml

@@ -1,17 +1,20 @@
-web1:
-  image: web
-  expose:
-    - "81"
-  environment:
-    WEB_PORTS: "81"
-    VIRTUAL_HOST: "www.nginx-proxy.tld"
-    VIRTUAL_PATH: "/web1/"
-    VIRTUAL_DEST: "/"
+version: "2"
 
 
-sut:
-  image: nginxproxy/nginx-proxy:test
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
-    - ./certs:/etc/nginx/certs:ro
-  environment:
-    - DEFAULT_ROOT=301 http://$$host/web1$$request_uri
+services:
+  web1:
+    image: web
+    expose:
+      - "81"
+    environment:
+      WEB_PORTS: "81"
+      VIRTUAL_HOST: "www.nginx-proxy.tld"
+      VIRTUAL_PATH: "/web1/"
+      VIRTUAL_DEST: "/"
+
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro
+      - ./certs:/etc/nginx/certs:ro
+    environment:
+      - DEFAULT_ROOT=301 http://$$host/web1$$request_uri

+ 37 - 34
test/test_virtual-path/test_location_precedence.yml

@@ -1,37 +1,40 @@
-web1:
-  image: web
-  expose:
-    - "81"
-  environment:
-    WEB_PORTS: "81"
-    VIRTUAL_HOST: "foo.nginx-proxy.test"
-    VIRTUAL_PATH: "/web1/"
-    VIRTUAL_DEST: "/"
+version: "2"
 
 
-web2:
-  image: web
-  expose:
-    - "82"
-  environment:
-    WEB_PORTS: "82"
-    VIRTUAL_HOST: "bar.nginx-proxy.test"
-    VIRTUAL_PATH: "/web2/"
-    VIRTUAL_DEST: "/"
+services:
+  web1:
+    image: web
+    expose:
+      - "81"
+    environment:
+      WEB_PORTS: "81"
+      VIRTUAL_HOST: "foo.nginx-proxy.test"
+      VIRTUAL_PATH: "/web1/"
+      VIRTUAL_DEST: "/"
 
 
-web3:
-  image: web
-  expose:
-    - "83"
-  environment:
-    WEB_PORTS: "83"
-    VIRTUAL_HOST: "bar.nginx-proxy.test"
-    VIRTUAL_PATH: "/web3/"
-    VIRTUAL_DEST: "/"
+  web2:
+    image: web
+    expose:
+      - "82"
+    environment:
+      WEB_PORTS: "82"
+      VIRTUAL_HOST: "bar.nginx-proxy.test"
+      VIRTUAL_PATH: "/web2/"
+      VIRTUAL_DEST: "/"
 
 
-sut:
-  image: nginxproxy/nginx-proxy:test
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
-    - ./default.conf:/etc/nginx/vhost.d/default_location:ro
-    - ./host.conf:/etc/nginx/vhost.d/bar.nginx-proxy.test_location:ro
-    - ./path.conf:/etc/nginx/vhost.d/bar.nginx-proxy.test_99f2db0ed8aa95dbb5b87fca79c7eff2ff6bb8bd_location:ro
+  web3:
+    image: web
+    expose:
+      - "83"
+    environment:
+      WEB_PORTS: "83"
+      VIRTUAL_HOST: "bar.nginx-proxy.test"
+      VIRTUAL_PATH: "/web3/"
+      VIRTUAL_DEST: "/"
+
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro
+      - ./default.conf:/etc/nginx/vhost.d/default_location:ro
+      - ./host.conf:/etc/nginx/vhost.d/bar.nginx-proxy.test_location:ro
+      - ./path.conf:/etc/nginx/vhost.d/bar.nginx-proxy.test_99f2db0ed8aa95dbb5b87fca79c7eff2ff6bb8bd_location:ro

+ 1 - 0
test/test_virtual-path/test_virtual_paths.py

@@ -39,6 +39,7 @@ def web4(docker_compose):
         },
         },
         ports={"84/tcp": None}
         ports={"84/tcp": None}
     )
     )
+    docker_compose.networks.get("test_virtual-path_default").connect(container)
     sleep(2)  # give it some time to initialize and for docker-gen to detect it
     sleep(2)  # give it some time to initialize and for docker-gen to detect it
     yield container
     yield container
     try:
     try:

+ 39 - 37
test/test_virtual-path/test_virtual_paths.yml

@@ -1,42 +1,44 @@
+version: "2"
 
 
-foo:
-  image: web
-  expose:
-    - "42"
-  environment:
-    WEB_PORTS: "42"
-    VIRTUAL_HOST: "foo.nginx-proxy.test"
+services:
+  foo:
+    image: web
+    expose:
+      - "42"
+    environment:
+      WEB_PORTS: "42"
+      VIRTUAL_HOST: "foo.nginx-proxy.test"
 
 
-web1:
-  image: web
-  expose:
-    - "81"
-  environment:
-    WEB_PORTS: "81"
-    VIRTUAL_HOST: "nginx-proxy.test"
-    VIRTUAL_PATH: "/web1/"
-    VIRTUAL_DEST: "/"
+  web1:
+    image: web
+    expose:
+      - "81"
+    environment:
+      WEB_PORTS: "81"
+      VIRTUAL_HOST: "nginx-proxy.test"
+      VIRTUAL_PATH: "/web1/"
+      VIRTUAL_DEST: "/"
 
 
-web2:
-  image: web
-  expose:
-    - "82"
-  environment:
-    WEB_PORTS: "82"
-    VIRTUAL_HOST: "nginx-proxy.test"
-    VIRTUAL_PATH: "/web2/"
-    VIRTUAL_DEST: "/"
+  web2:
+    image: web
+    expose:
+      - "82"
+    environment:
+      WEB_PORTS: "82"
+      VIRTUAL_HOST: "nginx-proxy.test"
+      VIRTUAL_PATH: "/web2/"
+      VIRTUAL_DEST: "/"
 
 
-web3:
-  image: web
-  expose:
-    - "83"
-  environment:
-    WEB_PORTS: "83"
-    VIRTUAL_HOST: "nginx-proxy.test"
-    VIRTUAL_PATH: "/"
+  web3:
+    image: web
+    expose:
+      - "83"
+    environment:
+      WEB_PORTS: "83"
+      VIRTUAL_HOST: "nginx-proxy.test"
+      VIRTUAL_PATH: "/"
 
 
-sut:
-  image: nginxproxy/nginx-proxy:test
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro

+ 34 - 32
test/test_wildcard_host.yml

@@ -1,37 +1,39 @@
-web1:
-  image: web
-  expose:
-    - "81"
-  environment:
-    WEB_PORTS: "81"
-    VIRTUAL_HOST: "*.nginx-proxy.test"
+version: "2"
 
 
-web2:
-  image: web
-  expose:
-    - "82"
-  environment:
-    WEB_PORTS: "82"
-    VIRTUAL_HOST: "test.nginx-proxy.*"
+services:
+  web1:
+    image: web
+    expose:
+      - "81"
+    environment:
+      WEB_PORTS: "81"
+      VIRTUAL_HOST: "*.nginx-proxy.test"
 
 
-web3:
-  image: web
-  expose:
-    - "83"
-  environment:
-    WEB_PORTS: "83"
-    VIRTUAL_HOST: ~^web3\..*\.nginx-proxy\.regexp
+  web2:
+    image: web
+    expose:
+      - "82"
+    environment:
+      WEB_PORTS: "82"
+      VIRTUAL_HOST: "test.nginx-proxy.*"
 
 
-web4:
-  image: web
-  expose:
-    - "84"
-  environment:
-    WEB_PORTS: "84"
-    VIRTUAL_HOST: ~^web4\..*\.nginx-proxy\.regexp$$ # we need to double the `$` because of docker-compose variable interpolation
+  web3:
+    image: web
+    expose:
+      - "83"
+    environment:
+      WEB_PORTS: "83"
+      VIRTUAL_HOST: ~^web3\..*\.nginx-proxy\.regexp
 
 
+  web4:
+    image: web
+    expose:
+      - "84"
+    environment:
+      WEB_PORTS: "84"
+      VIRTUAL_HOST: ~^web4\..*\.nginx-proxy\.regexp$$ # we need to double the `$` because of docker compose variable interpolation
 
 
-sut:
-  image: nginxproxy/nginx-proxy:test
-  volumes:
-    - /var/run/docker.sock:/tmp/docker.sock:ro
+  sut:
+    image: nginxproxy/nginx-proxy:test
+    volumes:
+      - /var/run/docker.sock:/tmp/docker.sock:ro