Compare commits

...

11 Commits

Author SHA1 Message Date
Geoff Bourne
6396e58d3c Upgrading default minecraft server to 1.8.1 2014-12-01 04:05:12 +00:00
Geoff Bourne
4de10e1ba8 Reposition ES_VERSION after apt-get operations 2014-11-30 21:39:59 -06:00
Geoff Bourne
1a364ae733 Upgrading ES to 1.4.1 2014-11-30 18:56:16 -06:00
Geoff Bourne
9ffa2daeaa Fixing minor typos in README 2014-11-30 17:59:09 -06:00
Geoff Bourne
8973e7dc7b Deprecating the elasticsearch-marvel image 2014-11-15 15:29:49 -06:00
Geoff Bourne
3c8db58c7e Adding 1.4 stream at 1.4.0 2014-11-15 21:15:33 +00:00
Geoff Bourne
ee9f27546b Removing command-echoing in start script and adding info output 2014-11-15 21:12:49 +00:00
Geoff Bourne
8a2199a890 Added a README 2014-11-15 15:02:27 -06:00
Geoff Bourne
b4be1b37bd Added support for installing plugins 2014-11-15 20:10:06 +00:00
Geoff Bourne
d590bc62c1 Added PUBLISH_AS capability 2014-11-15 18:05:01 +00:00
Geoff Bourne
9349ca6d04 Initial setup of direct-from-elasticsearch.org install 2014-11-15 04:39:34 +00:00
6 changed files with 195 additions and 16 deletions

View File

@@ -1,5 +0,0 @@
FROM dockerfile/elasticsearch
MAINTAINER itzg
RUN /elasticsearch/bin/plugin -i elasticsearch/marvel/latest

View File

@@ -1,11 +1,5 @@
This image extends the official elasticsearch image by adding the Marvel Sense plugin. This will get you a system ready to use with the [ElasticSearch Getting Started Guide](http://www.elasticsearch.org/guide/en/elasticsearch/guide/current).
**This image is now deprecated. **
Start the container with a command-line such as
docker run -d --name es -p 9200:9200 -p 9300:9300 itzg/elasticsearch-marvel
and now with Marvel Sense installed you can access it using a URL like:
http://192.168.59.103:9200/_plugin/marvel/sense/index.html
(replacing the IP address shown here with your Docker host's)
Please use [itzg/elasticsearch](https://registry.hub.docker.com/u/itzg/elasticsearch/)
instead. See the plugins configuration section for that image to see how
to install Marvel.

27
elasticsearch/Dockerfile Normal file
View File

@@ -0,0 +1,27 @@
FROM itzg/ubuntu-openjdk-7
MAINTAINER itzg
RUN apt-get install -y wget && apt-get clean
ENV ES_VERSION 1.4.1
RUN wget -qO /tmp/es.tgz https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-$ES_VERSION.tar.gz && \
cd /usr/share && \
tar xf /tmp/es.tgz && \
rm /tmp/es.tgz
ENV ES_HOME /usr/share/elasticsearch-$ES_VERSION
RUN useradd -d $ES_HOME -M -r elasticsearch && \
chown -R elasticsearch: $ES_HOME
RUN mkdir /data /conf && touch /data/.CREATED /conf/.CREATED && chown -R elasticsearch: /data /conf
VOLUME ["/data","/conf"]
ADD start /start
WORKDIR $ES_HOME
USER elasticsearch
EXPOSE 9200 9300
CMD ["/start"]

120
elasticsearch/README.md Normal file
View File

@@ -0,0 +1,120 @@
This Docker image provides an easily configurable Elasticsearch node. Via
port mappings, it is easy to create an arbitrarily sized cluster of
nodes. As long as the versions match, you can mix-and-match "real"
Elasticsearch nodes with container-ized ones.
# Basic Usage
To start an Elasticsearch data node that listens on the standard ports on
your host's network interface:
docker run -d -p 9200:9200 -p 9300:9300 itzg/elasticsearch
You'll then be able to connect to the Elasticsearch HTTP interface to confirm
it's alive:
http://DOCKERHOST:9200/
{
"status" : 200,
"name" : "Charon",
"version" : {
"number" : "1.3.5",
"build_hash" : "4a50e7df768fddd572f48830ae9c35e4ded86ac1",
"build_timestamp" : "2014-11-05T15:21:28Z",
"build_snapshot" : false,
"lucene_version" : "4.9"
},
"tagline" : "You Know, for Search"
}
Where `DOCKERHOST` would be the actual hostname of your host running
Docker.
# Basic multi-node cluster
Running a multi-node cluster (3-node in this example) is almost as easy:
docker run -d -p 9200:9200 -p 9300:9300 itzg/elasticsearch
docker run -d -p 9201:9200 -p 9301:9300 itzg/elasticsearch
docker run -d -p 9202:9200 -p 9302:9300 itzg/elasticsearch
where the only difference was the host port binding of `9200:`/`9300:`,
`9201:`/`9301:`, and `9202:`/`9302:`. By default, Elasticsearch uses
[Zen Discovery](http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-discovery-zen.html), so the three nodes find each other and form a cluster. You
can confirm that by checking the cluster health for the presence of
three nodes (`number_of_nodes`):
http://DOCKERHOST:9200/_cluster/health?pretty
{
"cluster_name" : "elasticsearch",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 3,
"number_of_data_nodes" : 3,
"active_primary_shards" : 0,
"active_shards" : 0,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0
}
# Configuration
The following configuration options are specified using `docker run`
environment variables (`-e`) like
docker run ... -e NAME=VALUE ... itzg/elasticsearch
## Cluster Name
If joining a pre-existing cluster, then you may need to specify a cluster name
different than the default "elasticsearch":
-e CLUSTER=dockers
## Zen Unicast Hosts
When joining a multi-physical-host cluster, multicast may not be supported
on the physical network. In that case, your node can reference specific one or more hosts in
the cluster via the
[Zen Unicast Hosts](http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-discovery-zen.html#unicast) capability as a comma-separated list of `HOST:PORT` pairs:
-e UNICAST_HOSTS=HOST:PORT[,HOST:PORT]
such as
-e UNICAST_HOSTS=192.168.0.100:9300
## Plugins
You can install one or more plugins before startup by passing a comma-separated
list of plugins.
-e PLUGINS=ID[,ID]
In this example, it will install the Marvel plugin
-e PLUGINS=elasticsearch/marvel/latest
Many more plugins [are available here](http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-plugins.html#known-plugins).
## Publish As
Since the container gives the Elasticsearch software an isolated perspective
of its networking, it will most likely advertise its published address with
a container-internal IP address. This can be overridden with a physical networking
name and port using:
-e PUBLISH_AS=DOCKERHOST:9301
_Author Note: I have yet to hit a case where this was actually necessary. Other
than the cosmetic weirdness in the logs, Elasticsearch seems to be quite tolerant._
## Node Name
Rather than use the randomly assigned node name, you can indicate a specific
one using:
-e NODE_NAME=Docker

43
elasticsearch/start Executable file
View File

@@ -0,0 +1,43 @@
#!/bin/sh
if [ ! -e /conf/elasticsearch.* ]; then
cp $ES_HOME/config/elasticsearch.yml /conf
fi
if [ ! -e /conf/logging.* ]; then
cp $ES_HOME/config/logging.yml /conf
fi
OPTS="-Des.path.conf=/conf \
-Des.path.data=/data \
-Des.path.logs=/data \
-Des.transport.tcp.port=9300 \
-Des.http.port=9200"
if [ -n "$CLUSTER" ]; then
OPTS="$OPTS -Des.cluster.name=$CLUSTER"
fi
if [ -n "$NODE_NAME" ]; then
OPTS="$OPTS -Des.node.name=$NODE_NAME"
fi
if [ -n "$UNICAST_HOSTS" ]; then
OPTS="$OPTS -Des.discovery.zen.ping.unicast.hosts=$UNICAST_HOSTS"
fi
if [ -n "$PUBLISH_AS" ]; then
OPTS="$OPTS -Des.transport.publish_host=$(echo $PUBLISH_AS | awk -F: '{print $1}')"
OPTS="$OPTS -Des.transport.publish_port=$(echo $PUBLISH_AS | awk -F: '{if ($2) print $2; else print 9300}')"
fi
if [ -n "$PLUGINS" ]; then
for p in $(echo $PLUGINS | awk -v RS=, '{print}')
do
echo "Installing the plugin $p"
$ES_HOME/bin/plugin --install $p
done
fi
echo "Starting Elasticsearch with the options $OPTS"
$ES_HOME/bin/elasticsearch $OPTS

View File

@@ -26,4 +26,4 @@ CMD [ "/start-minecraft" ]
ENV MOTD A Minecraft Server Powered by Docker
ENV LEVEL world
ENV JVM_OPTS -Xmx1024M -Xms1024M
ENV VERSION 1.8
ENV VERSION 1.8.1