You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by wi...@apache.org on 2019/05/10 16:53:53 UTC
[couchdb-docker] 01/01: Dockerfile based on the RedHat UBI
This is an automated email from the ASF dual-hosted git repository.
willholley pushed a commit to branch ubi
in repository https://gitbox.apache.org/repos/asf/couchdb-docker.git
commit 17259f7373dcb1d5d942e8b11775a06a221cc89f
Author: Will Holley <wi...@gmail.com>
AuthorDate: Fri May 10 17:51:35 2019 +0100
Dockerfile based on the RedHat UBI
Installs CouchDB 2.3.1 via the official rpm.
To build:
```
$ cd 2.3.1
$ docker build . -f ubi7/Dockerfile
```
---
2.3.1/bintray-apache-couchdb-rpm.repo | 6 ++
2.3.1/ubi7/Dockerfile | 126 ++++++++++++++++++++++++++++++++++
2 files changed, 132 insertions(+)
diff --git a/2.3.1/bintray-apache-couchdb-rpm.repo b/2.3.1/bintray-apache-couchdb-rpm.repo
new file mode 100644
index 0000000..18bb9c2
--- /dev/null
+++ b/2.3.1/bintray-apache-couchdb-rpm.repo
@@ -0,0 +1,6 @@
+[bintray-apache-couchdb-rpm]
+name=bintray--apache-couchdb-rpm
+baseurl=http://apache.bintray.com/couchdb-rpm/el7/x86_64
+gpgcheck=0
+repo_gpgcheck=0
+enabled=1
diff --git a/2.3.1/ubi7/Dockerfile b/2.3.1/ubi7/Dockerfile
new file mode 100644
index 0000000..74851ee
--- /dev/null
+++ b/2.3.1/ubi7/Dockerfile
@@ -0,0 +1,126 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+FROM registry.access.redhat.com/ubi7/ubi
+
+LABEL maintainer="CouchDB Developers dev@couchdb.apache.org"
+
+# Add CouchDB user account to make sure the IDs are assigned consistently
+RUN groupadd -g 5984 -r couchdb && useradd -u 5984 -d /opt/couchdb -g couchdb couchdb
+
+# be sure GPG and apt-transport-https are available and functional
+RUN set -ex; \
+ yum update; \
+ yum install -y \
+ ca-certificates \
+ dirmngr \
+ gnupg \
+ yum clean all; \
+ rm -rf /var/cache/yum
+
+# grab gosu for easy step-down from root and tini for signal handling and zombie reaping
+# see https://github.com/apache/couchdb-docker/pull/28#discussion_r141112407
+ENV GOSU_VERSION 1.11
+ENV TINI_VERSION 0.18.0
+RUN set -ex; \
+ \
+ yum update -y; \
+ yum history new; \
+ yum install -y wget; \
+ \
+# install gosu
+ wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/${GOSU_VERSION}/gosu-amd64"; \
+ wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-amd64.asc"; \
+ export GNUPGHOME="$(mktemp -d)"; \
+ echo "disable-ipv6" >> ${GNUPGHOME}/dirmngr.conf; \
+ for server in $(shuf -e pgpkeys.mit.edu \
+ ha.pool.sks-keyservers.net \
+ hkp://p80.pool.sks-keyservers.net:80 \
+ pgp.mit.edu) ; do \
+ gpg --batch --keyserver $server --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 && break || : ; \
+ done; \
+ gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \
+ rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc; \
+ chmod +x /usr/local/bin/gosu; \
+ gosu nobody true; \
+ \
+# install tini
+ wget -O /usr/local/bin/tini "https://github.com/krallin/tini/releases/download/v${TINI_VERSION}/tini-amd64"; \
+ wget -O /usr/local/bin/tini.asc "https://github.com/krallin/tini/releases/download/v${TINI_VERSION}/tini-amd64.asc"; \
+ export GNUPGHOME="$(mktemp -d)"; \
+ echo "disable-ipv6" >> ${GNUPGHOME}/dirmngr.conf; \
+ for server in $(shuf -e pgpkeys.mit.edu \
+ ha.pool.sks-keyservers.net \
+ hkp://p80.pool.sks-keyservers.net:80 \
+ pgp.mit.edu) ; do \
+ gpg --batch --keyserver $server --recv-keys 595E85A6B1B4779EA4DAAEC70B588DFF0527A9B7 && break || : ; \
+ done; \
+ gpg --batch --verify /usr/local/bin/tini.asc /usr/local/bin/tini; \
+ rm -rf "$GNUPGHOME" /usr/local/bin/tini.asc; \
+ chmod +x /usr/local/bin/tini; \
+ tini --version; \
+\
+# Enable EPEL repositories
+ wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm; \
+# Remove wget
+ yum -y history undo 1; \
+ yum install -y epel-release-latest-7.noarch.rpm; \
+ rm epel-release-latest-7.noarch.rpm; \
+# Clean up
+ yum clean all; \
+ rm -rf /var/cache/yum
+
+
+# https://docs.couchdb.org/en/stable/install/unix.html
+# ENV GPG_COUCH_KEY \
+# # gpg: key D401AB61: public key "Bintray (by JFrog) <bi...@bintray.com> imported
+# 8756C4F765C9AC3CB6B85D62379CE192D401AB61
+# RUN set -xe; \
+# export GNUPGHOME="$(mktemp -d)"; \
+# echo "disable-ipv6" >> ${GNUPGHOME}/dirmngr.conf; \
+# for server in $(shuf -e pgpkeys.mit.edu \
+# ha.pool.sks-keyservers.net \
+# hkp://p80.pool.sks-keyservers.net:80 \
+# pgp.mit.edu) ; do \
+# gpg --batch --keyserver $server --recv-keys $GPG_COUCH_KEY && break || : ; \
+# done; \
+# gpg --batch --export $GPG_COUCH_KEY > /etc/apt/trusted.gpg.d/couchdb.gpg; \
+# command -v gpgconf && gpgconf --kill all || :; \
+# rm -rf "$GNUPGHOME"; \
+# apt-key list
+
+COPY bintray-apache-couchdb-rpm.repo /etc/yum.repos.d/bintray-apache-couchdb-rpm.repo
+
+ENV COUCHDB_VERSION 2.3.1
+
+# Install CouchDB
+RUN set -xe; \
+ yum install --enablerepo=bintray-apache-couchdb-rpm -y couchdb; \
+ yum clean all; \
+ rm -rf /var/cache/yum
+
+# Add configuration
+COPY 10-docker-default.ini /opt/couchdb/etc/default.d/
+COPY vm.args /opt/couchdb/etc/
+COPY docker-entrypoint.sh /usr/local/bin
+RUN ln -s usr/local/bin/docker-entrypoint.sh /docker-entrypoint.sh # backwards compat
+ENTRYPOINT ["tini", "--", "/docker-entrypoint.sh"]
+
+# Setup directories and permissions
+RUN find /opt/couchdb \! \( -user couchdb -group couchdb \) -exec chown -f couchdb:couchdb '{}' +
+VOLUME /opt/couchdb/data
+
+# 5984: Main CouchDB endpoint
+# 4369: Erlang portmap daemon (epmd)
+# 9100: CouchDB cluster communication port
+EXPOSE 5984 4369 9100
+CMD ["/opt/couchdb/bin/couchdb"]