|
| 1 | +FROM debian:jessie |
| 2 | + |
| 3 | +# Update distro |
| 4 | +RUN apt-get update -y && apt-get -y upgrade && apt-get -y dist-upgrade |
| 5 | + |
| 6 | +# Install CouchDB from source |
| 7 | +RUN apt-get --no-install-recommends -y install \ |
| 8 | + build-essential pkg-config erlang \ |
| 9 | + libicu-dev libmozjs185-dev libcurl4-openssl-dev \ |
| 10 | + wget curl ca-certificates \ |
| 11 | + && cd /usr/src \ |
| 12 | + && wget http://www-eu.apache.org/dist/couchdb/source/2.0.0/apache-couchdb-2.0.0.tar.gz \ |
| 13 | + && tar xfz apache-couchdb-2.0.0.tar.gz \ |
| 14 | + && cd apache-couchdb-2.0.0 \ |
| 15 | + && ./configure \ |
| 16 | + && make release \ |
| 17 | + && adduser --system \ |
| 18 | + --shell /bin/bash \ |
| 19 | + --group --gecos \ |
| 20 | + "CouchDB Administrator" couchdb \ |
| 21 | + && cp -R ./rel/couchdb /home/couchdb \ |
| 22 | + && chown -R couchdb:couchdb /home/couchdb/couchdb \ |
| 23 | + && find /home/couchdb/couchdb -type d -exec chmod 0770 {} \; \ |
| 24 | + && chmod 0644 /home/couchdb/couchdb/etc/* |
| 25 | + |
| 26 | +# grab gosu for easy step-down from root and tini for signal handling |
| 27 | +RUN gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \ |
| 28 | + && curl -o /usr/local/bin/gosu -fSL "https://github.com/tianon/gosu/releases/download/1.7/gosu-$(dpkg --print-architecture)" \ |
| 29 | + && curl -o /usr/local/bin/gosu.asc -fSL "https://github.com/tianon/gosu/releases/download/1.7/gosu-$(dpkg --print-architecture).asc" \ |
| 30 | + && gpg --verify /usr/local/bin/gosu.asc \ |
| 31 | + && rm /usr/local/bin/gosu.asc \ |
| 32 | + && chmod +x /usr/local/bin/gosu \ |
| 33 | + && gpg --keyserver ha.pool.sks-keyservers.net --recv-keys 6380DC428747F6C393FEACA59A84159D7001A4E5 \ |
| 34 | + && curl -o /usr/local/bin/tini -fSL "https://github.com/krallin/tini/releases/download/v0.14.0/tini" \ |
| 35 | + && curl -o /usr/local/bin/tini.asc -fSL "https://github.com/krallin/tini/releases/download/v0.14.0/tini.asc" \ |
| 36 | + && gpg --verify /usr/local/bin/tini.asc \ |
| 37 | + && rm /usr/local/bin/tini.asc \ |
| 38 | + && chmod +x /usr/local/bin/tini |
| 39 | + |
| 40 | +# Add config files |
| 41 | +COPY local.ini /home/couchdb/couchdb/etc/local.d/ |
| 42 | +COPY vm.args /home/couchdb/couchdb/etc/ |
| 43 | + |
| 44 | +COPY ./docker-entrypoint.sh / |
| 45 | + |
| 46 | +# Setup directories and permissions |
| 47 | +RUN mkdir /home/couchdb/couchdb/data /home/couchdb/couchdb/etc/default.d \ |
| 48 | + && chown -R couchdb:couchdb /home/couchdb/couchdb/ |
| 49 | + |
| 50 | +WORKDIR /home/couchdb/couchdb |
| 51 | + |
| 52 | +EXPOSE 5984 4369 9100-9200 |
| 53 | + |
| 54 | +VOLUME ["/home/couchdb/couchdb/data"] |
| 55 | + |
| 56 | +ENTRYPOINT ["tini", "--", "/docker-entrypoint.sh"] |
| 57 | +CMD ["/home/couchdb/couchdb/bin/couchdb"] |
0 commit comments