diff --git a/README.md b/README.md index 54a355f..4ade545 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,20 @@ Try to ping from host % ping nginx.local +Default hosts +----- +By default adding records with container name and container hostname. +To disable it you can use environments `CONTAINER_HOSTNAME_DISABLED` and `CONTAINER_NAME_DISABLED`: +```bash +$ docker run -d --restart=always \ + --name docker-hosts-updater \ + -v /var/run/docker.sock:/var/run/docker.sock \ + -v /etc/hosts:/opt/hosts \ + -e CONTAINER_HOSTNAME_DISABLED=false \ + -e CONTAINER_NAME_DISABLED=false \ + grachevko/docker-hosts-updater +``` + Multiple Hosts ----- You can add multiple hosts, just separate them by semicolon: diff --git a/docker-compose.yml b/docker-compose.yml index 260ed47..080e7fa 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,8 +3,11 @@ version: '3.7' services: dhu: build: - context: . + context: . image: grachev/dhu +# environment: +# CONTAINER_HOSTNAME_DISABLED: 'false' +# CONTAINER_NAME_DISABLED: 'false' volumes: - /var/run/docker.sock:/var/run/docker.sock - ./:/usr/local/app diff --git a/main.py b/main.py index 6df8f52..7d02912 100644 --- a/main.py +++ b/main.py @@ -1,10 +1,13 @@ import docker import re +import os from netaddr import valid_ipv4 LABEL = 'ru.grachevko.dhu' MARKER = '#### DOCKER HOSTS UPDATER ####' HOSTS_PATH = '/opt/hosts' +CONTAINER_HOSTNAME_DISABLED = bool(os.getenv('CONTAINER_HOSTNAME_DISABLED', False)) +CONTAINER_NAME_DISABLED = bool(os.getenv('CONTAINER_NAME_DISABLED', False)) def listen(): @@ -41,11 +44,17 @@ def scan(): if ip == False: ip = next(iter(lb.attrs.get('NetworkSettings').get('Networks').values())).get('IPAddress') + hosts = string_to_array(string) + if not CONTAINER_HOSTNAME_DISABLED: + hosts.append(container.attrs.get('Config').get('Hostname')) + if not CONTAINER_NAME_DISABLED: + hosts.append(container.name) + if ip: containers.append({ 'ip': ip, 'priority': priority, - 'hosts': string_to_array(string), + 'hosts': hosts, 'createdAt': container.attrs.get('Created'), })