mirror of
https://github.com/vxcontrol/coredns-docker-discovery.git
synced 2026-07-01 23:43:59 -04:00
108 lines
3.0 KiB
Markdown
108 lines
3.0 KiB
Markdown
Install for local development
|
|
---
|
|
|
|
Create `Corefile`
|
|
|
|
loc:53 {
|
|
docker unix:///var/run/docker.sock {
|
|
domain docker.loc
|
|
}
|
|
cache 20
|
|
log
|
|
}
|
|
|
|
Run coredns in alpine container with assigned static ip. Specify any network is required.
|
|
`${PWD}/coredns` path to executed coredns file. See `How To Build` section in [README.md](README.md)
|
|
|
|
docker run -v /var/run/docker.sock:/var/run/docker.sock -v ${PWD}/coredns:/coredns -v ${HOME}/Corefile:/Corefile --network=any_network --ip=172.19.5.5 --name=coredns --restart=unless-stopped -d alpine /coredns
|
|
|
|
Note --ip have `any_network` mask (in my case 172.19.0.0)
|
|
Run any container for test and check out to correct resolve of container (coredns container ip is specified)
|
|
|
|
docker run --name my-rabbitmq rabbitmq
|
|
dig @172.19.5.5 my-rabbitmq.docker.loc
|
|
|
|
;; ANSWER SECTION:
|
|
my-rabbitmq.docker.loc. 2335 IN A 172.17.0.2
|
|
|
|
Install [resolvconf](https://en.wikipedia.org/wiki/Resolvconf) packet if you don't have
|
|
|
|
Add coredns's container ip to resolve.conf
|
|
|
|
echo "nameserver 172.19.5.5" | sudo tee --append /etc/resolvconf/resolv.conf.d/tail
|
|
sudo resolvconf -u
|
|
|
|
Check container resolving
|
|
|
|
dig my-rabbitmq.docker.loc
|
|
my-rabbitmq.docker.loc. 2335 IN A 172.17.0.2
|
|
|
|
Open in your browser http://my-rabbitmq.docker.loc:15672 (rabbitmq dashboard work on 15672 by default)
|
|
|
|
Development with multiple docker-compose microservices
|
|
----
|
|
|
|
Create `Corefile`
|
|
|
|
my-project.loc:15353 {
|
|
docker unix:///var/run/docker.sock {
|
|
network_aliases my_project_network
|
|
filter_network my_project_network
|
|
}
|
|
cache 20
|
|
log
|
|
}
|
|
|
|
Create `my_project_network` network
|
|
|
|
docker create network my_project_network
|
|
|
|
Example `docker-compose.yml` for multiple services project.
|
|
Add external network `my_project_network` to every compose file.
|
|
|
|
Payment service:
|
|
|
|
version: "3.7"
|
|
|
|
services:
|
|
nginx:
|
|
image: nginx:latest
|
|
networks:
|
|
default:
|
|
aliases:
|
|
- payment.my-project.loc
|
|
networks:
|
|
default:
|
|
external:
|
|
name: my_project_network
|
|
|
|
Auth service:
|
|
|
|
version: "3.7"
|
|
|
|
services:
|
|
nginx:
|
|
image: nginx:latest
|
|
networks:
|
|
default:
|
|
aliases:
|
|
- auth.my-project.loc
|
|
networks:
|
|
default:
|
|
external:
|
|
name: my_project_network
|
|
|
|
Or run container with specify our network
|
|
|
|
docker run --network my_project_network --alias postgres.my-project.loc postgres
|
|
|
|
Check out access to container via local dns `payment.my-project.loc`, `auth.my-project.loc` and `postgres.my-project.loc`
|
|
|
|
$ dig payment.my-project.loc
|
|
|
|
;; ANSWER SECTION:
|
|
payment.my-project.loc. 2335 IN A 172.20.0.2
|
|
|
|
Our localhost and all containers in `my_project_network` network have access to each other by aliases.
|
|
|
|
It's let you reach any services without reverse proxy and avoid ports conflict, confused specified unique published ports. |