github.com/leonlxy/hyperledger@v1.0.0-alpha.0.20170427033203-34922035d248/images/couchdb/Dockerfile.in (about)

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