diff --git a/Dockerfile b/Dockerfile index 6ac4ebb..6db0436 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,7 @@ RUN mkdir /hoster WORKDIR /hoster ADD hoster.py /hoster/ -CMD ["python3", "hoster.py"] +CMD ["python3", "-u", "hoster.py"] diff --git a/README.md b/README.md index 3c4ec0f..7c14458 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,10 @@ A simple "etc/hosts" file injection tool to resolve names of local Docker contai hoster is intended to run in a Docker container: - docker run -d \ - -v /var/run/docker.sock:/tmp/docker.sock \ - -v /etc/hosts:/tmp/hosts \ - dvdarias/docker-hoster + docker run -d \ + -v /var/run/docker.sock:/tmp/docker.sock \ + -v /etc/hosts:/tmp/hosts \ + dvdarias/docker-hoster The `docker.sock` is mounted to allow hoster to listen for Docker events and automatically register containers IP. @@ -19,9 +19,9 @@ Hoster provides by default the entry `.local` for each container. Also you For example, the following container would be available via DNS as `myname.local`, `myserver.com` and `www.myserver.com`: - docker run -d \ - --name myname \ - --label hoster.domains="myserver.com www.myserver.com" \ - mycontainer + docker run -d \ + --name myname \ + --label hoster.domains="myserver.com www.myserver.com" \ + mycontainer If you need more features like **systemd interation** and **dns forwarding** please check [resolvable](https://hub.docker.com/r/mgood/resolvable/) diff --git a/hoster.py b/hoster.py index 304b04e..7a05c24 100644 --- a/hoster.py +++ b/hoster.py @@ -39,17 +39,18 @@ def main(): #listen for events to keep the hosts file updated for e in events: - - if e["status"]=="start": + status = e["status"]; + if status =="start": container_id = e["id"] container = get_container_data(docker, container_id) hosts[container_id] = container update_hosts_file() - if e["status"]=="stop": + if status=="stop" or status=="die" or status=="destroy": container_id = e["id"] - hosts.pop(container_id) - update_hosts_file() + if container_id in hosts: + hosts.pop(container_id) + update_hosts_file() def get_container_data(docker, container_id):