github.com/darrenli6/fabric-sdk-example@v0.0.0-20220109053535-94b13b56df8c/images/couchdb/Dockerfile.in (about) 1 # Copyright Greg Haskins All Rights Reserved 2 # 3 # SPDX-License-Identifier: Apache-2.0 4 # 5 FROM _BASE_NS_/fabric-baseimage:_BASE_TAG_ 6 7 # Based on https://github.com/klaemo/docker-couchdb/blob/master/2.0.0/Dockerfile 8 9 # Add CouchDB user account 10 RUN groupadd -r couchdb && useradd -d /opt/couchdb -g couchdb couchdb 11 12 RUN apt-get update -y && apt-get install -y --no-install-recommends \ 13 ca-certificates \ 14 curl \ 15 erlang-nox \ 16 erlang-reltool \ 17 haproxy \ 18 libicu5. \ 19 libmozjs185-1.0 \ 20 openssl \ 21 cmake \ 22 apt-transport-https \ 23 gcc \ 24 g++ \ 25 erlang-dev \ 26 libcurl4-openssl-dev \ 27 libicu-dev \ 28 libmozjs185-dev \ 29 make \ 30 && rm -rf /var/lib/apt/lists/* 31 32 # Grab su-exec and tini 33 RUN set -x \ 34 && git clone https://github.com/ncopa/su-exec /tmp/su-exec/ \ 35 && cd /tmp/su-exec \ 36 && make all \ 37 && cp su-exec /usr/bin/ \ 38 && git clone https://github.com/krallin/tini/ /tmp/tini/ \ 39 && cd /tmp/tini/ \ 40 && git checkout v0.14.0 \ 41 && cmake . && make \ 42 && cp tini tini-static /usr/local/bin/ \ 43 # Clean up su-exec and tini 44 && rm -rf /tmp/tini \ 45 && rm -rf /tmp/su-exec 46 47 ARG COUCHDB_VERSION=2.0.0 48 49 # Download dev dependencies 50 RUN set -x \ 51 && npm install -g grunt-cli \ 52 # Acquire CouchDB source code 53 && cd /usr/src && mkdir couchdb \ 54 && curl -fSL https://archive.apache.org/dist/couchdb/source/$COUCHDB_VERSION/apache-couchdb-$COUCHDB_VERSION.tar.gz -o couchdb.tar.gz \ 55 && tar -xzf couchdb.tar.gz -C couchdb --strip-components=1 \ 56 && cd couchdb \ 57 # Build the release and install into /opt 58 && ./configure --disable-docs \ 59 && make release \ 60 && mv /usr/src/couchdb/rel/couchdb /opt/ \ 61 # Cleanup build detritus 62 && rm -rf /var/lib/apt/lists/* /usr/lib/node_modules /usr/src/couchdb* 63 64 # Add configuration 65 COPY payload/local.ini /opt/couchdb/etc/local.d/ 66 COPY payload/vm.args /opt/couchdb/etc/ 67 COPY payload/docker-entrypoint.sh / 68 69 # Setup directories and permissions 70 RUN chmod +x /docker-entrypoint.sh \ 71 && mkdir /opt/couchdb/data /opt/couchdb/etc/default.d \ 72 && chown -R couchdb:couchdb /opt/couchdb/ 73 74 WORKDIR /opt/couchdb 75 EXPOSE 5984 4369 9100 76 77 VOLUME ["/opt/couchdb/data"] 78 79 ENTRYPOINT ["tini", "--", "/docker-entrypoint.sh"] 80 CMD ["/opt/couchdb/bin/couchdb"]