mirror of
https://github.com/thib8956/nginx-proxy
synced 2024-11-22 03:46:29 +00:00
TESTS: add tests for using nginx and docker-gen in separated containers
This commit is contained in:
parent
a533ff6aff
commit
43d8ba0e78
@ -18,7 +18,7 @@ docker build -t nginx-proxy-tester -f $DIR/requirements/Dockerfile-nginx-proxy-t
|
|||||||
# run the nginx-proxy-tester container setting the correct value for the working dir in order for
|
# 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.
|
# docker-compose to work properly when run from within that container.
|
||||||
exec docker run --rm -it \
|
exec docker run --rm -it \
|
||||||
-v ${DIR}:/${DIR}:ro \
|
-v ${DIR}:/${DIR} \
|
||||||
-w ${DIR} \
|
-w ${DIR} \
|
||||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||||
nginx-proxy-tester ${ARGS}
|
nginx-proxy-tester ${ARGS}
|
||||||
|
1
test2/test_dockergen/.gitignore
vendored
Normal file
1
test2/test_dockergen/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
nginx.tmpl
|
38
test2/test_dockergen/test_dockergen_v2.py
Normal file
38
test2/test_dockergen/test_dockergen_v2.py
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
import os
|
||||||
|
import docker
|
||||||
|
import logging
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.yield_fixture(scope="module")
|
||||||
|
def nginx_tmpl():
|
||||||
|
"""
|
||||||
|
pytest fixture which extracts the the nginx config template from
|
||||||
|
the jwilder/nginx-proxy:test image
|
||||||
|
"""
|
||||||
|
script_dir = os.path.dirname(__file__)
|
||||||
|
logging.info("extracting nginx.tmpl from jwilder/nginx-proxy:test")
|
||||||
|
docker_client = docker.from_env()
|
||||||
|
print(docker_client.containers.run(
|
||||||
|
image='jwilder/nginx-proxy:test',
|
||||||
|
remove=True,
|
||||||
|
volumes=['{current_dir}:{current_dir}'.format(current_dir=script_dir)],
|
||||||
|
entrypoint='sh',
|
||||||
|
command='-xc "cp /app/nginx.tmpl {current_dir} && chmod 777 {current_dir}/nginx.tmpl"'.format(current_dir=script_dir),
|
||||||
|
stderr=True))
|
||||||
|
yield
|
||||||
|
logging.info("removing nginx.tmpl")
|
||||||
|
os.remove(os.path.join(script_dir, "nginx.tmpl"))
|
||||||
|
|
||||||
|
|
||||||
|
def test_unknown_virtual_host_is_503(nginx_tmpl, docker_compose, nginxproxy):
|
||||||
|
r = nginxproxy.get("http://unknown.nginx.container.docker/")
|
||||||
|
assert r.status_code == 503
|
||||||
|
|
||||||
|
|
||||||
|
def test_forwards_to_whoami(nginx_tmpl, docker_compose, nginxproxy):
|
||||||
|
r = nginxproxy.get("http://whoami.nginx.container.docker/")
|
||||||
|
assert r.status_code == 200
|
||||||
|
whoami_container = docker_compose.containers.get("whoami")
|
||||||
|
assert r.text == "I'm %s\n" % whoami_container.id[:12]
|
||||||
|
|
23
test2/test_dockergen/test_dockergen_v2.yml
Normal file
23
test2/test_dockergen/test_dockergen_v2.yml
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
version: '2'
|
||||||
|
|
||||||
|
services:
|
||||||
|
nginx:
|
||||||
|
image: nginx
|
||||||
|
container_name: nginx
|
||||||
|
volumes:
|
||||||
|
- /etc/nginx/conf.d
|
||||||
|
|
||||||
|
dockergen:
|
||||||
|
image: jwilder/docker-gen
|
||||||
|
command: -notify-sighup nginx -watch /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf
|
||||||
|
volumes_from:
|
||||||
|
- nginx
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/tmp/docker.sock:ro
|
||||||
|
- ./nginx.tmpl:/etc/docker-gen/templates/nginx.tmpl
|
||||||
|
|
||||||
|
whoami:
|
||||||
|
image: jwilder/whoami
|
||||||
|
container_name: whoami
|
||||||
|
environment:
|
||||||
|
- VIRTUAL_HOST=whoami.nginx.container.docker
|
46
test2/test_dockergen/test_dockergen_v3.py
Normal file
46
test2/test_dockergen/test_dockergen_v3.py
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
import os
|
||||||
|
import docker
|
||||||
|
import logging
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
|
||||||
|
def versiontuple(v):
|
||||||
|
return tuple(map(int, (v.split("."))))
|
||||||
|
|
||||||
|
docker_version = docker.from_env().version()['Version']
|
||||||
|
pytestmark = pytest.mark.skipif(versiontuple(docker_version) < versiontuple('1.13'),
|
||||||
|
reason="Docker compose syntax v3 requires docker engine v1.13")
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.yield_fixture(scope="module")
|
||||||
|
def nginx_tmpl():
|
||||||
|
"""
|
||||||
|
pytest fixture which extracts the the nginx config template from
|
||||||
|
the jwilder/nginx-proxy:test image
|
||||||
|
"""
|
||||||
|
script_dir = os.path.dirname(__file__)
|
||||||
|
logging.info("extracting nginx.tmpl from jwilder/nginx-proxy:test")
|
||||||
|
docker_client = docker.from_env()
|
||||||
|
print(docker_client.containers.run(
|
||||||
|
image='jwilder/nginx-proxy:test',
|
||||||
|
remove=True,
|
||||||
|
volumes=['{current_dir}:{current_dir}'.format(current_dir=script_dir)],
|
||||||
|
entrypoint='sh',
|
||||||
|
command='-xc "cp /app/nginx.tmpl {current_dir} && chmod 777 {current_dir}/nginx.tmpl"'.format(current_dir=script_dir),
|
||||||
|
stderr=True))
|
||||||
|
yield
|
||||||
|
logging.info("removing nginx.tmpl")
|
||||||
|
os.remove(os.path.join(script_dir, "nginx.tmpl"))
|
||||||
|
|
||||||
|
|
||||||
|
def test_unknown_virtual_host_is_503(nginx_tmpl, docker_compose, nginxproxy):
|
||||||
|
r = nginxproxy.get("http://unknown.nginx.container.docker/")
|
||||||
|
assert r.status_code == 503
|
||||||
|
|
||||||
|
|
||||||
|
def test_forwards_to_whoami(nginx_tmpl, docker_compose, nginxproxy):
|
||||||
|
r = nginxproxy.get("http://whoami.nginx.container.docker/")
|
||||||
|
assert r.status_code == 200
|
||||||
|
whoami_container = docker_compose.containers.get("whoami")
|
||||||
|
assert r.text == "I'm %s\n" % whoami_container.id[:12]
|
||||||
|
|
24
test2/test_dockergen/test_dockergen_v3.yml
Normal file
24
test2/test_dockergen/test_dockergen_v3.yml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
version: '3'
|
||||||
|
services:
|
||||||
|
nginx:
|
||||||
|
image: nginx
|
||||||
|
container_name: nginx
|
||||||
|
volumes:
|
||||||
|
- nginx_conf:/etc/nginx/conf.d
|
||||||
|
|
||||||
|
dockergen:
|
||||||
|
image: jwilder/docker-gen
|
||||||
|
command: -notify-sighup nginx -watch /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/tmp/docker.sock:ro
|
||||||
|
- ./nginx.tmpl:/etc/docker-gen/templates/nginx.tmpl
|
||||||
|
- nginx_conf:/etc/nginx/conf.d
|
||||||
|
|
||||||
|
whoami:
|
||||||
|
image: jwilder/whoami
|
||||||
|
container_name: whoami
|
||||||
|
environment:
|
||||||
|
- VIRTUAL_HOST=whoami.nginx.container.docker
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
nginx_conf: {}
|
Loading…
Reference in New Issue
Block a user