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"]