2016-06-15 4 views
1

Ich denke, dass dies ein XY-Problem sein kann, also werde ich den Kontext der Frage einbeziehen, da ich nicht den besten Weg kenne, um dieses Problem zu lösen.Wie richte ich einen DNS-Container innerhalb von Docker-Compose ein?

Ich habe eine Kubernetes-Umgebung auf AWS eingerichtet, so dass ich zwei Teile habe, einen Nginx-Container und einen Back-End-Dienst (den ich SvcA nennen werde). Da der Back-End-Dienst kommen und gehen können, in meinem nginx Config habe ich etwas, das wie folgt aussieht:

resolver kube-dns.kube-system.svc.cluster.local valid=60s ipv6=off; 

server { 
    # stuff 
    location/{ 
     set $backend "SvcA.default.svc.cluster.local:8000"; 
     proxy_pass http://$backend; 
    } 
} 

Dieses Setup funktioniert gut auf Kubernetes, aber ich möchte eine Möglichkeit haben, bis auf die (fast) genau das gleiche Set mit meine lokale Maschine zum Testen/Entwickeln, aber ohne den ganzen Overhead der Verwendung von Kubernetes. Ich möchte diese beiden Container (nginx, SvcA) in eine docker-compose-Datei stecken und so arbeiten lassen. Das Problem, auf das ich gestoßen bin, ist, dass der Resolver für den Nginx hart codiert ist, um die URL auf kubernetes zu sein, und die Lösung, die ich denke, ist, Container zu haben, der ein DNS ist, und der einzige Eintrag ist " SvcA.default.svc.cluster.local "dem Namen docker-compose zuordnet.

Ich bin nicht sicher, ob dies der beste Weg ist, um das Problem zu lösen, und wenn es ist, weiß ich nicht genug über DNS-Konfiguration, um dies einzurichten. Ist das die beste Lösung für mein Problem, und wenn ja, wie würde ich einen DNS-Server konfigurieren, um damit umzugehen?

Antwort

1

Ich bin mir nicht sicher, ob Sie eine DNS benötigen.

können Sie etwas tun, auch wenn die URL fest einprogrammiert ist zB Docker-compose.yml

version: '2' 
services: 
    service1: 
    ... 
    networks: 
    back-tier: 
     ipv4_address: "172.16.238.10" 
    service2: 
    ... 
    networks: 
     back-tier: 
     ipv4_adress: "172.16.238.11" 
networks: 
    back-tier: 
    driver: bridge 
    ipam: 
     driver: default 
     config: 
     - subnet: 172.16.238.0/24 
     gateway: 172.16.238.1 

Sie können sogar Set Host-Namen für jeden Container, etc., können Sie auch eine Verbindung zwischen ihnen machen könnte . Wenn Sie es kreisförmig benötigen, können Sie es mit extra_hosts Parameter tun.

wenn sollten alle Informationen, die Sie hier finden müssen fähig sein: https://docs.docker.com/compose/compose-file/

wenn die Behälter auf dem gleichen Netzwerk sind sie in der Lage sein sollten miteinander

+0

ich es wahrscheinlich wusste sprechen würde ein einfacherer Weg. Das bringt mich am meisten dorthin. Weißt du, ob "127.0.0.11" immer die IP des internen Nameservers ist? (Ich muss einen "extra_hosts" -Eintrag für den Resolver in der Nginx-Konfiguration erstellen, und ich kann keine Dokumentation finden, wie man die IP der internen DNS setzt) ​​ – Richard

+0

Ich glaube, dass Sie die folgenden Parameter in docker-compose verwenden können .yml https://docs.docker.com/v1.11/compose/compose-file/#dns –