By default, ElasticSearch runs on port 9200 for Rest API, using which we can communicate with ElasticSearch.
There are two ways we can run the ElasticSearch on different ports through docker.
Through docker-compose.yml
We can directly update the environment configuration in docker-compose.yml
and run it on a different port.
The changes have to be made at two different places, the port at which elasticsearch run and the port at which docker will run it.
version: "3.7" services: # Elasticsearch Docker Images: https://www.docker.elastic.co/ elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2 container_name: elasticsearch environment: - xpack.security.enabled=false - discovery.type=single-node - http.port=8080 #different port ulimits: memlock: soft: -1 hard: -1 nofile: soft: 65536 hard: 65536 cap_add: - IPC_LOCK volumes: - elasticsearch-data:/usr/share/elasticsearch/data ports: - 8080:8080 #different port - 9300:9300 volumes: elasticsearch-data: driver: local
Through elasticsearch.yml
We can have the complete ElasticSearch-related configuration abstracted to a different file and then import it in docker-compose.yml
.
elasticsearch.yml
http.port: 8080
docker-compose.yml
version: "3.7" services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2 container_name: elasticsearch environment: - xpack.security.enabled=false - discovery.type=single-node ulimits: memlock: soft: -1 hard: -1 nofile: soft: 65536 hard: 65536 cap_add: - IPC_LOCK volumes: - elasticsearch-data:/usr/share/elasticsearch/data - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml #import elasticsarch config ports: - 8080:8080 #different port - 9300:9300 volumes: elasticsearch-data: driver: local
The docker-compose.yml
and elasticsearch.yml
are placed in the same directory that is why it is imported as ./elasticsearch.yml
and then copied to /usr/share/elasticsearch/config/elasticsearch.yml