{"id":4407328,"url":"https://github.com/grachevko/docker-hosts-updater","last_synced_at":"2026-02-12T15:37:49.599Z","repository":{"id":222373358,"uuid":"65417945","full_name":"grachevko/docker-hosts-updater","owner":"grachevko","description":"Automatic update /etc/hosts on start/stop containers.","archived":false,"fork":false,"pushed_at":"2021-09-13T19:25:17.000Z","size":42,"stargazers_count":39,"open_issues_count":0,"forks_count":9,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-09-01T01:27:24.806Z","etag":null,"topics":["development-environment","dns","docker","service-discovery"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/grachevko.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-08-10T21:32:43.000Z","updated_at":"2025-08-05T10:30:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"c999b327-43d4-4fdc-86f0-71a1dc50e45f","html_url":"https://github.com/grachevko/docker-hosts-updater","commit_stats":null,"previous_names":["grachevko/docker-hosts-updater"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/grachevko/docker-hosts-updater","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grachevko%2Fdocker-hosts-updater","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grachevko%2Fdocker-hosts-updater/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grachevko%2Fdocker-hosts-updater/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grachevko%2Fdocker-hosts-updater/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/grachevko","download_url":"https://codeload.github.com/grachevko/docker-hosts-updater/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grachevko%2Fdocker-hosts-updater/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273992215,"owners_count":25203698,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-07T02:00:09.463Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["development-environment","dns","docker","service-discovery"],"created_at":"2024-02-13T21:29:43.710Z","updated_at":"2026-02-12T15:37:49.591Z","avatar_url":"https://github.com/grachevko.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"docker-hosts-updater\n----------\nAutomatic update `/etc/hosts` on start/stop containers by labels.\n\nRequirements\n-----\n* **Native linux**  \n_This tool has no effect on macOS or windows, because docker on these OS run in \nVM and you can't directly access from host to each container via ip.\nYet you can pass traffic through loadbalancer, see section above._  \n\nUsage\n-----\nStart up `docker-hosts-updater`:\n\n```bash\n$ docker run -d --restart=always \\\n    --name docker-hosts-updater \\\n    -v /var/run/docker.sock:/var/run/docker.sock \\\n    -v /etc/hosts:/opt/hosts \\\n    grachevko/docker-hosts-updater\n```\n    \nStart containers with label `ru.grachevko.dhu` option\n\n    % docker run -d --label ru.grachevko.dhu=nginx.local nginx\n      \nTry to ping from host\n\n    % ping nginx.local\n\nDefault hosts\n-----\nBy default adding records with container name and container hostname. \nTo disable it you can use environments `CONTAINER_HOSTNAME_DISABLED` and `CONTAINER_NAME_DISABLED`:    \n```bash\n$ docker run -d --restart=always \\\n    --name docker-hosts-updater \\\n    -v /var/run/docker.sock:/var/run/docker.sock \\\n    -v /etc/hosts:/opt/hosts \\\n    -e CONTAINER_HOSTNAME_DISABLED=false \\\n    -e CONTAINER_NAME_DISABLED=false \\\n    grachevko/docker-hosts-updater\n```\n\nMultiple Hosts\n-----\nYou can add multiple hosts, just separate them by semicolon:\n\n```bash\n$ docker run --label ru.grachevko.dhu=\"nginx.local;nginx.ru\" nginx\n$ ping nginx.local\n$ ping nginx.ru\n```\n\nSubdomains\n-----\nAdd subdomains by using pattern `{www,api}.nginx.local`:\n\n```bash\n$ docker run -d --label ru.grachevko.dhu=\"{www,api}.nginx.local\" nginx\n$ ping nginx.local\n$ ping www.nginx.local\n$ ping api.nginx.local\n```\n\nPriority\n----\nIf you want to run two containers with same hosts and want one override another, \njust add priority after colon:\n\n```bash\n$ docker run -d --label ru.grachevko.dhu=\"nginx.local\" nginx\n$ docker run -d --label ru.grachevko.dhu=\"nginx.local:10\" nginx\n$ ping nginx.local\n```\nContainer with greater priority will be used. Default priority 0. \nIf priority is the same then early created container will be used.\n\nLoad Balancer\n----\nIn order to pass the traffic through the loadbalancer you should define container's name or valid IPv4. \nJust add one more colon and container name after it.\n```bash\n$ docker run -d --name lb nginx\n$ docker run -d --label ru.grachevko.dhu=\"nginx1.local:0:lb\" nginx\n$ docker run -d --label ru.grachevko.dhu=\"nginx2.local:0:127.0.0.1\" nginx\n$ ping nginx1.local // ip of lb\n$ ping nginx2.local // ip of lb\n```\nKeep in mind, loadbalancer container must have fixed name.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrachevko%2Fdocker-hosts-updater","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgrachevko%2Fdocker-hosts-updater","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrachevko%2Fdocker-hosts-updater/lists"}