mirror of
https://github.com/thib8956/nginx-proxy
synced 2025-07-01 14:25:46 +00:00
Merge pull request #2222 from rot169/support-hostnet-containers
Support containers running --net=host (#1537)
This commit is contained in:
@ -160,6 +160,10 @@ def container_ip(container: Container):
|
||||
net_info = container.attrs["NetworkSettings"]["Networks"]
|
||||
if "bridge" in net_info:
|
||||
return net_info["bridge"]["IPAddress"]
|
||||
|
||||
# container is running in host network mode
|
||||
if "host" in net_info:
|
||||
return "127.0.0.1"
|
||||
|
||||
# not default bridge network, fallback on first network defined
|
||||
network_name = list(net_info.keys())[0]
|
||||
@ -173,6 +177,10 @@ def container_ipv6(container):
|
||||
net_info = container.attrs["NetworkSettings"]["Networks"]
|
||||
if "bridge" in net_info:
|
||||
return net_info["bridge"]["GlobalIPv6Address"]
|
||||
|
||||
# container is running in host network mode
|
||||
if "host" in net_info:
|
||||
return "::1"
|
||||
|
||||
# not default bridge network, fallback on first network defined
|
||||
network_name = list(net_info.keys())[0]
|
||||
|
13
test/test_host-network-mode/test_host-network-mode.py
Normal file
13
test/test_host-network-mode/test_host-network-mode.py
Normal file
@ -0,0 +1,13 @@
|
||||
import pytest
|
||||
|
||||
|
||||
def test_forwards_to_bridge_network_container(docker_compose, nginxproxy):
|
||||
r = nginxproxy.get("http://bridge-network.nginx-proxy.tld/port")
|
||||
assert r.status_code == 200
|
||||
assert r.text == "answer from port 80\n"
|
||||
|
||||
|
||||
def test_forwards_to_host_network_container(docker_compose, nginxproxy):
|
||||
r = nginxproxy.get("http://host-network.nginx-proxy.tld/port")
|
||||
assert r.status_code == 200
|
||||
assert r.text == "answer from port 8080\n"
|
31
test/test_host-network-mode/test_host-network-mode.yml
Normal file
31
test/test_host-network-mode/test_host-network-mode.yml
Normal file
@ -0,0 +1,31 @@
|
||||
version: "2"
|
||||
|
||||
networks:
|
||||
net1:
|
||||
internal: true
|
||||
net2:
|
||||
|
||||
services:
|
||||
bridge-network:
|
||||
image: web
|
||||
environment:
|
||||
WEB_PORTS: "80"
|
||||
VIRTUAL_HOST: "bridge-network.nginx-proxy.tld"
|
||||
networks:
|
||||
- net2
|
||||
|
||||
host-network:
|
||||
image: web
|
||||
environment:
|
||||
WEB_PORTS: "8080"
|
||||
VIRTUAL_HOST: "host-network.nginx-proxy.tld"
|
||||
VIRTUAL_PORT: "8080"
|
||||
network_mode: host
|
||||
|
||||
sut:
|
||||
image: nginxproxy/nginx-proxy:test
|
||||
volumes:
|
||||
- /var/run/docker.sock:/tmp/docker.sock:ro
|
||||
networks:
|
||||
- net1
|
||||
- net2
|
13
test/test_host-network-mode/test_proxy-host-network-mode.py
Normal file
13
test/test_host-network-mode/test_proxy-host-network-mode.py
Normal file
@ -0,0 +1,13 @@
|
||||
import pytest
|
||||
|
||||
|
||||
def test_forwards_to_host_network_container_1(docker_compose, nginxproxy):
|
||||
r = nginxproxy.get("http://host-network-1.nginx-proxy.tld:8888/port")
|
||||
assert r.status_code == 200
|
||||
assert r.text == "answer from port 8080\n"
|
||||
|
||||
|
||||
def test_forwards_to_host_network_container_2(docker_compose, nginxproxy):
|
||||
r = nginxproxy.get("http://host-network-2.nginx-proxy.tld:8888/port")
|
||||
assert r.status_code == 200
|
||||
assert r.text == "answer from port 8181\n"
|
26
test/test_host-network-mode/test_proxy-host-network-mode.yml
Normal file
26
test/test_host-network-mode/test_proxy-host-network-mode.yml
Normal file
@ -0,0 +1,26 @@
|
||||
version: "2"
|
||||
|
||||
services:
|
||||
host-network-1:
|
||||
image: web
|
||||
environment:
|
||||
WEB_PORTS: "8080"
|
||||
VIRTUAL_HOST: "host-network-1.nginx-proxy.tld"
|
||||
VIRTUAL_PORT: "8080"
|
||||
network_mode: host
|
||||
|
||||
host-network-2:
|
||||
image: web
|
||||
environment:
|
||||
WEB_PORTS: "8181"
|
||||
VIRTUAL_HOST: "host-network-2.nginx-proxy.tld"
|
||||
VIRTUAL_PORT: "8181"
|
||||
network_mode: host
|
||||
|
||||
sut:
|
||||
image: nginxproxy/nginx-proxy:test
|
||||
volumes:
|
||||
- /var/run/docker.sock:/tmp/docker.sock:ro
|
||||
environment:
|
||||
HTTP_PORT: 8888
|
||||
network_mode: host
|
Reference in New Issue
Block a user