forked from aaw/docker-elasticsearch
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Dockerfile.erb
82 lines (65 loc) · 2.95 KB
/
Dockerfile.erb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
FROM quay.io/aptible/ubuntu:<%= ENV.fetch 'OS_VERSION' %>
# Create user early to ensure consistent UID
ENV ES_USER <%= ENV.fetch 'ES_USER' %>
ENV ES_GROUP <%= ENV.fetch 'ES_GROUP' %>
RUN getent group "$ES_GROUP" || groupadd -r "$ES_GROUP"
RUN getent passwd "$ES_USER" || useradd -r -g "$ES_GROUP" "$ES_USER"
# Install utilities we'll need
RUN apt-install software-properties-common apache2-utils sudo curl
# Install Java and clean up
ENV JAVA_VERSION <%= ENV.fetch 'JAVA_VERSION' %>
RUN add-apt-repository -y ppa:openjdk-r/ppa && \
apt-install "openjdk-${JAVA_VERSION}-jre"
ENV JAVA_HOME /usr/lib/jvm/java-<%= ENV.fetch 'JAVA_VERSION' %>-openjdk-amd64/
# Install NGiNX
RUN add-apt-repository -y ppa:nginx/stable && \
apt-install nginx && mkdir -p /etc/nginx/ssl
# Install Elasticsearch and backup plugin.
ENV ES_VERSION <%= ENV.fetch 'ES_VERSION' %>
ENV DOWNLOAD_URL <%= ENV.fetch 'DOWNLOAD_URL' %>
ENV ES_SHA1SUM <%= ENV.fetch 'ES_SHA1SUM' %>
ENV ES_BACKUP_PLUGIN <%= ENV.fetch 'ES_BACKUP_PLUGIN' %>
# Plugin wrapper for ES compatibility
ADD bin/plugin-install-wrapper /usr/bin/plugin-install-wrapper
RUN cd /tmp \
&& curl -fsSL -o "elasticsearch-${ES_VERSION}.tar.gz" "${DOWNLOAD_URL}" \
&& echo "${ES_SHA1SUM} elasticsearch-${ES_VERSION}.tar.gz" | sha1sum -c - \
&& tar xf "elasticsearch-${ES_VERSION}.tar.gz" \
&& rm "elasticsearch-${ES_VERSION}.tar.gz" \
&& mv "elasticsearch-${ES_VERSION}" /elasticsearch \
&& chown -R "${ES_USER}:${ES_GROUP}" "/elasticsearch/config" \
&& plugin-install-wrapper "$ES_BACKUP_PLUGIN"
# Install node.js and elasticdump tool for --dump/--restore options.
# https://github.com/taskrabbit/elasticsearch-dump
ENV NODE_VERSION 4.3.1
ENV NODE_SHA1SUM be09c49e82c49dae6945ece09be43abff4379818
RUN cd /tmp \
&& curl -fsSLO "https://nodejs.org/dist/v$NODE_VERSION/node-v${NODE_VERSION}-linux-x64.tar.gz" \
&& echo "${NODE_SHA1SUM} node-v${NODE_VERSION}-linux-x64.tar.gz" \
&& tar xf "node-v${NODE_VERSION}-linux-x64.tar.gz" \
&& rm "node-v${NODE_VERSION}-linux-x64.tar.gz" \
&& mv "node-v${NODE_VERSION}-linux-x64" / \
&& ln -s "/node-v${NODE_VERSION}-linux-x64/bin/node" /usr/local/bin/ \
&& ln -s "/node-v${NODE_VERSION}-linux-x64/bin/npm" /usr/local/bin/
# Configuration templates
ADD templates/nginx.conf.template /etc/nginx/nginx.conf.template
ADD <%= ENV.fetch 'TAG' %>/templates/elasticsearch.yml.template /elasticsearch/config/elasticsearch.yml.template
RUN rm /etc/nginx/nginx.conf
RUN rm /elasticsearch/config/elasticsearch.yml
# Additional wrappers
ADD bin/cluster-wrapper /usr/bin/cluster-wrapper
ADD bin/nginx-wrapper /usr/bin/nginx-wrapper
ADD bin/elasticsearch-wrapper /usr/bin/elasticsearch-wrapper
ADD bin/run-database.sh /usr/bin/
ADD bin/utilities.sh /usr/bin/
ENV DATA_DIRECTORY /var/db
ENV SSL_DIRECTORY /etc/nginx/ssl
VOLUME ["$DATA_DIRECTORY"]
VOLUME ["$SSL_DIRECTORY"]
# Integration tests
ADD test /tmp/test
ADD <%= ENV.fetch 'TAG' %>/test /tmp/test
# Expose NGiNX proxy ports
EXPOSE 80
EXPOSE 443
ENTRYPOINT ["run-database.sh"]