我相信这是一个简单的问题,但我仍然不能从Docker-compose文档中得到它。links和external_links有什么区别?
我喜欢external_links,因为我想拥有核心docker-compose,我想在不覆盖核心链接的情况下扩展它。
我到底有什么,我正在尝试设置logstash,这取决于elasticsearch。Elasticsearch在核心docker-compose中,logstash在依赖的docker-compose中。因此,我不得不在依赖的docker-compose中将弹性搜索定义为引用,因为logstash需要它作为链接。但是Elasticsearch已经有了自己的链接,我不想在依赖的链接中重复它们。
我能用external_link而不是link做到这一点吗?
我知道links会确保链接在链接之前先打开,external_link也会这样做吗?
任何帮助都是非常感谢的。谢谢。
发布于 2016-02-03 05:28:19
如果要将同一docker-compose.yml中的容器链接在一起,请使用links。您所需要做的就是设置指向服务名称的链接。如下所示:
---
elasticsearch:
image: elasticsearch:latest
command: elasticsearch -Des.network.host=0.0.0.0
ports:
- "9200:9200"
logstash:
image: logstash:latest
command: logstash -f logstash.conf
ports:
- "5000:5000"
links:
- elasticsearch如果您希望将docker-compose.yml中的容器链接到不包含在同一docker-compose.yml中或以不同方式启动的另一个容器,则可以使用external_links,并将链接设置为容器的名称。如下所示:
---
logstash:
image: logstash:latest
command: logstash -f logstash.conf
ports:
- "5000:5000"
external_links:
- my_elasticsearch_container我建议使用第一种方法,除非您的用例出于某种原因要求它们不能在同一docker-compose.yml中
发布于 2016-02-03 01:22:31
我认为external_link不会在docker-compose up命令中做与links相同的事情。
links等待容器启动并获取etc/hosts文件中使用的IP地址,因此external_link已具有docker-compose文件中描述的IP:Hostname值名称。
发布于 2016-02-03 05:42:29
这里有一个指向Docker-Compose项目的链接,该项目使用了Elasticsearch、Logstash和Kibana。您将看到我使用的是链接:
https://github.com/bahaaldine/elasticsearch-paris-accidentology-demo
https://stackoverflow.com/questions/35154441
复制相似问题