Docker-compose links vs external_links Docker-compose links vs external_links elasticsearch elasticsearch

Docker-compose links vs external_links


Use links when you want to link together containers within the same docker-compose.yml. All you need to do is set the link to the service name. Like this:

---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

If you want to link a container inside of the docker-compose.yml to another container that was not included in the same docker-compose.yml or started in a different manner then you can use external_links and you would set the link to the container's name. Like this:

---logstash:  image: logstash:latest  command: logstash -f logstash.conf  ports:    - "5000:5000"  external_links:    - my_elasticsearch_container

I would suggest the first way unless your use case for some reason requires that they cannot be in the same docker-compose.yml


I think external_link will do not do the same as links in docker-compose up command.

links waits for container to boot up and get IP address which is used in etc/hosts file, therefore external_link has already IP:hostname values name described in docker-compose file.

Moreover links will be deprecated


Here is a link to Docker-Compose project that uses Elasticsearch, Logstash, and Kibana. You will see that I'm using links:

https://github.com/bahaaldine/elasticsearch-paris-accidentology-demo