- Notifications
You must be signed in to change notification settings - Fork0
Easy wildcard dns for local dev with docker
License
tblaisot/docker-dns
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
This is intended to be used within (but not limited to) a local docker development environment, typically in combination with some type of reverse proxy that supports virtualhosts like nginx. In this configuration,docker-dns allows you to simplify local container access by automatically setting up easier doamins likehello.docker
docker run -p 53:53/udp -d --restart always finboxio/docker-dns
Once this container is running, configure your system to route DNS queries through localhost and you're all set.
docker-dns can be configured through the use of a few environment variables:
-e PORT=${PORT:-53}sets the port the DNS server will listen on-e EXTERNAL_DNS=${IP:-8.8.8.8}sets the DNS server to which queries that cannot be resolved locally are proxied-e HOSTS_FILE=${FILE:-/etc/docker-dns/hosts} -v $FILE:$FILEsets the host file to read for resolving queries locally. This should look like a typical /etc/hosts file, but additionally supports wildcard entries. The default hosts file included in this image is shown below, but you are free to mount your own:127.0.0.1 *.docker192.168.99.100 *.rancher
Note:
The second entry is really only effective if you have a rancher host running in a virtual machine with the IP 192.168.99.100. I do some development against a local rancher cluster spun up viamac-ranch, so this is actually a reasonably useful default for me.
jwilder/nginx-proxy makes this really easy:
docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro --restart always jwilder/nginx-proxy
Note:
Your system may have a default web server already running on port 80. If that's the case you'll either need to disable it or choose a different port. If you're on mac and aren't using the default apache server you can disable it with
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
Now, you can start up any container withVIRTUAL_HOST set to adocker domain and access it from the browser without having to expose/keep track of all the different ports you're using!
docker run -d -p 80 -e VIRTUAL_HOST=hello.docker -e VIRTUAL_PORT=80 tutum/hello-world && open http://hello.docker
DNS proxy code shamelessly copied fromhubdotcom/marlon-tools. Thanks for the great work!
About
Easy wildcard dns for local dev with docker
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Languages
- JavaScript63.4%
- Makefile31.6%
- Dockerfile5.0%