2016-11-18 57 views
1

我是新來泊塢窗,所以也許這是一個基本的問題,但我並沒有爲它找到一個合適的回答。多克爾 - 撰寫:獲取鏈接容器內ADRESS其他容器中(在bash)

我想進去start.sh腳本彈性搜索ADRESS的環境變量。什麼是不是侵入性地做到這一點的正確方法,而不是對它進行硬編碼?

碼頭工人組成:

version: "2" 
services: 
    #elasticsearch 
    elasticsearch: 
    container_name: es 
    volumes: 
     - ./elasticsearch:/usr/share/elasticsearch/data 
    extends: 
     file: ../../base-config-dev.yml 
     service: elasticsearch 

    es-sync: 
    container_name: app-es-sync 
    hostname: app-es-sync 
    extends: 
     file: ../../base-config-dev.yml 
     service: es-sync 
    links: 
     - elasticsearch 

Dockerfile:

FROM python:3.4 
MAINTAINER [email protected] 
RUN pip install mongo-connector==2.4.1 elastic2-doc-manager 
RUN mkdir /opt/es-sync 
COPY files/* /opt/es-sync/ 
RUN chmod 755 /opt/es-sync/start.sh 
CMD exec /opt/es-sync/start.sh 

start.sh:

#!/bin/sh 

cd /opt/es-sync/ 
export LANG=ru_RU.UTF-8 

python3 create_index.py ${ES_URI} 

CONNECTOR_CONFIG="\ 
-m ${MONGO_URI} \ 
-t ${ES_URI} \ 
--oplog-ts=oplog.timestamp \ 
--batch-size=1 \ 
--verbose \ 
--continue-on-error \ 
--stdout \ 
--namespace-set=foo.bar \ 
--doc-manager elastic2_doc_manager" 

echo "CONNECTOR_CONFIG: $CONNECTOR_CONFIG" 

exec mongo-connector ${CONNECTOR_CONFIG} 

回答

1

由於您使用的泊塢撰寫link功能,你不應該有做任何事情,你應該能夠使用主機名。

由於你的鏈接被定義爲

links: 
    - elasticsearch 

,你應該能夠在elasticsearch主機下達到elasticsearch容器。

如果您從es-sync容器內嘗試ping elasticsearch,則應從中解析並訪問主機名。

然後你只需要把它變成一個URL(它看起來像你正在尋找的):http://elasticsearch:9200/(假設它在端口9200上運行)。

+0

它是這麼簡單嗎?編輯:我試圖引用'ES_URI = http:// elasticsearch:9200'並獲得'無法建立新的連接:[Errno 111]連接被拒絕從python腳本 – marknorkin

+0

你確定elasticsearch正在端口上運行9200?請驗證端口... – nwinkler

+0

,並確定它的啓動和運行,當你試圖連接?另外網絡是最好的聯繫,但得到它的第一個工作,我猜,在''../../base-config-dev.yml elasticsearch) – johnharris85