2017-02-11 75 views
1

我正在設置Spring應用程序以使用compose運行。應用程序需要建立到ActiveMQ的連接,或者爲開發者本地運行,或者爲現存的實例進行分段/生產。如何爲Docker Compose配置DNS條目

我的設置這是本地開發工作的偉大如下:

amq: 
    image: rmohr/activemq:latest 
    ports: 
     - "61616:61616" 
     - "8161:8161" 
legacy-bridge: 
    image: myco/myservice 
    links: 
     - amq 

,並在應用程序的配置,我聲明AMQ連接,

broker-url=tcp://amq:61616 

運行碼頭工人,組成了是偉大的工作,activeMQ在本地啓動,我的應用程序強制啓動並連接到它。

現在我需要將它設置爲分段/生產,其中ActiveMQ實例在基礎結構中的現有硬件上運行。我的想法是要麼使用彈簧配置文件來處理不同的配置,在這種情況下,'broker-url = tcp:// amq:61616'的應用程序配置條目會變成類似broker-url=tcp://some.host.here:61616的東西,或者找到某種方法在我的內部創建dns條目生產docker-compose.yml,它會將amq dns條目指向關聯的分段或生產隊列。

這裏最好的辦法是什麼,如果是DNS,我該如何設置它?

謝謝!

回答

3

使用extra_hosts標誌

我想到的第一件事就是用Compose's extra_hosts標誌:

legacy-bridge: 
    image: myco/myservice 
    extra_hosts: 
    - "amq:1.2.3.4" 

這不會創建一個DNS記錄,但在容器的/etc/hosts文件中的條目,從而有效地允許你繼續在您的應用程序中使用tcp://amq:61616作爲您的代理網址。

使用的大使容器

如果你不滿足於直接指定生產代理的IP地址,並想利用現有的DNS記錄,您可以使用ambassador pattern

amq-ambassador: 
    image: svendowideit/ambassador 
    command: ["your-amq-dns-name", "61616"] 
    ports: 
    - 61616 
legacy-bridge: 
    image: myco/myservice 
    links: 
    - "amq-ambassador:amq"