This repository has been archived by the owner. It is now read-only.
Dockerfile for a base Elasticsearch image to be extended by others (allow to install plug-ins, change configuration, etc.)
Clone or download
Latest commit a55ab17 Nov 7, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
config Forcibly disable x-pack ml plug-in Jun 14, 2018
Dockerfile Fixed directory ownership handling and allowed node awareness to be r… Oct 20, 2018
LICENSE Initial commit Mar 26, 2015
README.md EOL Nov 7, 2018
run.sh Fixed directory ownership handling and allowed node awareness to be r… Oct 20, 2018

README.md

This project is no longer maintained

As of November 7th, 2018, I've decided to end my commitment to maintaining this repo and related.

It's been 3 years since I last used Elasticsearch, so I no longer have the motivation it takes to maintain and evolve this project. Also, other projects need all the attention I can give.

It was a great run, thank you all.

docker-elasticsearch

Ready to use, lean and highly configurable Elasticsearch container image.

Docker Repository on Quay.io

Current software

  • Alpine Linux 3.8
  • OpenJDK JRE 8u171
  • Elasticsearch 6.4.2

Note: x-pack-ml module is forcibly disabled as it's not supported on Alpine Linux.

Run

Attention

Ready to use node for cluster elasticsearch-default:

docker run --name elasticsearch \
	--detach \
	--privileged \
	--volume /path/to/data_folder:/data \
        quay.io/pires/docker-elasticsearch:6.4.2

Ready to use node for cluster myclustername:

docker run --name elasticsearch \
	--detach \
	--privileged \
	--volume /path/to/data_folder:/data \
	-e CLUSTER_NAME=myclustername \
        quay.io/pires/docker-elasticsearch:6.4.2

Ready to use node for cluster elasticsearch-default, with 8GB heap allocated to Elasticsearch:

docker run --name elasticsearch \
	--detach \
	--privileged \
	--volume /path/to/data_folder:/data \
	-e ES_JAVA_OPTS="-Xms8g -Xmx8g" \
        quay.io/pires/docker-elasticsearch:6.4.2

Ready to use node with plugins (x-pack and repository-gcs) pre installed. Already installed plugins are ignored:

docker run --name elasticsearch \
	--detach \
	--privileged \
	--volume /path/to/data_folder:/data \
	-e ES_JAVA_OPTS="-Xms8g -Xmx8g" \
	-e ES_PLUGINS_INSTALL="repository-gcs,x-pack" \
        quay.io/pires/docker-elasticsearch:6.4.2

Master-only node for cluster elasticsearch-default:

docker run --name elasticsearch \
	--detach \
	--privileged \
	--volume /path/to/data_folder:/data \
	-e NODE_DATA=false \
	-e HTTP_ENABLE=false \
        quay.io/pires/docker-elasticsearch:6.4.2

Data-only node for cluster elasticsearch-default:

docker run --name elasticsearch \
	--detach --volume /path/to/data_folder:/data \
	--privileged \
	-e NODE_MASTER=false \
	-e HTTP_ENABLE=false \
        quay.io/pires/docker-elasticsearch:6.4.2

Data-only node for cluster elasticsearch-default with shard allocation awareness:

docker run --name elasticsearch \
	--detach --volume /path/to/data_folder:/data \
        --volume /etc/hostname:/dockerhost \
	--privileged \
	-e NODE_MASTER=false \
	-e HTTP_ENABLE=false \
    -e SHARD_ALLOCATION_AWARENESS=dockerhostname \
    -e SHARD_ALLOCATION_AWARENESS_ATTR="/dockerhost" \
        quay.io/pires/docker-elasticsearch:6.4.2

Client-only node for cluster elasticsearch-default:

docker run --name elasticsearch \
	--detach \
	--privileged \
	--volume /path/to/data_folder:/data \
	-e NODE_MASTER=false \
	-e NODE_DATA=false \
        quay.io/pires/docker-elasticsearch:6.4.2

I also make available special images and instructions for AWS EC2 and Kubernetes.

Environment variables

This image can be configured by means of environment variables, that one can set on a Deployment.

Backup

Mount a shared folder (for example via NFS) to /backup and make sure the elasticsearch user has write access. Then, set the REPO_LOCATIONS environment variable to "/backup" and create a backup repository:

backup_repository.json:

{
  "type": "fs",
  "settings": {
    "location": "/backup",
    "compress": true
  }
}
curl -XPOST http://<container_ip>:9200/_snapshot/nas_repository -d @backup_repository.json`

Now, you can take snapshots using:

curl -f -XPUT "http://<container_ip>:9200/_snapshot/nas_repository/snapshot_`date --utc +%Y_%m_%dt%H_%M`?wait_for_completion=true"