Fixed a bug on container stop

This commit is contained in:
David Darias 2015-11-18 21:24:45 -05:00
parent a8d70c0fcc
commit 1e96db458d
3 changed files with 15 additions and 14 deletions

View File

@ -5,7 +5,7 @@ RUN mkdir /hoster
WORKDIR /hoster
ADD hoster.py /hoster/
CMD ["python3", "hoster.py"]
CMD ["python3", "-u", "hoster.py"]

View File

@ -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 `<name>.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/)

View File

@ -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):