Add Couchbase 2.5 and generic Docker images

Introduces a new Docker image for Couchbase 2.5, including a Dockerfile, entrypoint, run scripts, and a dummy script for unsupported commands. Updates the 2.5 image to install libssl0.9.8 and modifies the CMD to use '-noinput'. Adds a README with credits and updates the GitHub Actions workflow to download the new dependency.
This commit is contained in:
2025-10-04 23:37:40 +07:00
parent 37559c5d40
commit f9568ec53d
7 changed files with 167 additions and 3 deletions
@@ -27,6 +27,7 @@ jobs:
wget https://launchpadlibrarian.net/329563761/libtasn1-3_2.10-1ubuntu1.6_amd64.deb
wget https://launchpadlibrarian.net/311120336/libgnutls26_2.12.14-5ubuntu3.14_amd64.deb
wget https://launchpadlibrarian.net/320724516/librtmp0_2.4~20110711.gitc28f1bab-1ubuntu0.1_amd64.deb
wget https://launchpadlibrarian.net/178402337/libssl0.9.8_0.9.8o-7ubuntu3.2_amd64.deb
wget https://packages.couchbase.com/releases/2.5.2/couchbase-server-enterprise_2.5.2_x86_64.deb
- name: Log in to GitHub Container Registry
+6
View File
@@ -0,0 +1,6 @@
# Docker Images
## Credits:
### Couchbase
- https://github.com/couchbase/docker/tree/couchbase-server-4.0.0-community
+3 -3
View File
@@ -12,6 +12,8 @@ RUN dpkg -i /tmp/libgpg-error0_*.deb && \
dpkg -i /tmp/libtasn1-3_*.deb && \
dpkg -i /tmp/libgnutls26_*.deb && \
dpkg -i /tmp/librtmp0_*.deb && \
dpkg -i /tmp/libssl0.9.8_*.deb && \
export INSTALL_DONT_START_SERVER=1 && \
dpkg -i /tmp/couchbase-server-enterprise_*.deb && \
rm /tmp/*.deb
@@ -22,6 +24,4 @@ RUN dpkg -i /tmp/libgpg-error0_*.deb && \
# 11211: Client interface (proxy)
EXPOSE 8091 8092 11210 11211
VOLUME /opt/couchbase/var
CMD ["/opt/couchbase/bin/couchbase-server"]
CMD ["/opt/couchbase/bin/couchbase-server", "--", "-noinput"]
+76
View File
@@ -0,0 +1,76 @@
FROM ubuntu:14.04
MAINTAINER Couchbase Docker Team <docker@couchbase.com>
# Install dependencies:
# runit: for container process management
# wget: for downloading .deb
# python-httplib2: used by CLI tools
# chrpath: for fixing curl, below
# tzdata: timezone info used by some N1QL functions
# Additional dependencies for system commands used by cbcollect_info:
# lsof: lsof
# lshw: lshw
# sysstat: iostat, sar, mpstat
# net-tools: ifconfig, arp, netstat
# numactl: numactl
RUN apt-get update && \
apt-get install -yq runit wget python-httplib2 chrpath tzdata \
lsof lshw sysstat net-tools numactl && \
apt-get autoremove && apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
ARG CB_VERSION=2.5.2
ARG CB_RELEASE_URL=https://packages.couchbase.com/releases
ARG CB_PACKAGE=couchbase-server-enterprise_2.5.2_x86_64.deb
# ARG CB_SHA256=e275717da0c22efb846b397a1ffeaf63a21ec91e4e481efe3b59de0a0d530982
ENV PATH=$PATH:/opt/couchbase/bin:/opt/couchbase/bin/tools:/opt/couchbase/bin/install
# Create Couchbase user with UID 1000 (necessary to match default
# boot2docker UID)
RUN groupadd -g 1000 couchbase && useradd couchbase -u 1000 -g couchbase -M
# Install couchbase
RUN export INSTALL_DONT_START_SERVER=1 && \
wget -N $CB_RELEASE_URL/$CB_VERSION/$CB_PACKAGE && \
# echo "$CB_SHA256 $CB_PACKAGE" | sha256sum -c - && \
dpkg -i ./$CB_PACKAGE && rm -f ./$CB_PACKAGE
# Add runit script for couchbase-server
COPY scripts/run /etc/service/couchbase-server/run
RUN chown -R couchbase:couchbase /etc/service
# Add dummy script for commands invoked by cbcollect_info that
# make no sense in a Docker container
COPY scripts/dummy.sh /usr/local/bin/
RUN ln -s dummy.sh /usr/local/bin/iptables-save && \
ln -s dummy.sh /usr/local/bin/lvdisplay && \
ln -s dummy.sh /usr/local/bin/vgdisplay && \
ln -s dummy.sh /usr/local/bin/pvdisplay
# Fix curl RPATH
RUN chrpath -r '$ORIGIN/../lib' /opt/couchbase/bin/curl
# Add bootstrap script
COPY scripts/entrypoint.sh /
ENTRYPOINT ["/entrypoint.sh"]
CMD ["couchbase-server"]
# 8091: Couchbase Web console, REST/HTTP interface
# 8092: Views, queries, XDCR
# 8093: Query services (4.0+)
# 8094: Full-text Search (4.5+)
# 8095: Analytics (5.5+)
# 8096: Eventing (5.5+)
# 11207: Smart client library data node access (SSL)
# 11210: Smart client library/moxi data node access
# 11211: Legacy non-smart client library data node access
# 18091: Couchbase Web console, REST/HTTP interface (SSL)
# 18092: Views, query, XDCR (SSL)
# 18093: Query services (SSL) (4.0+)
# 18094: Full-text Search (SSL) (4.5+)
# 18095: Analytics (SSL) (5.5+)
# 18096: Eventing (SSL) (5.5+)
EXPOSE 8091 8092 8093 8094 8095 8096 11207 11210 11211 18091 18092 18093 18094 18095 18096
VOLUME /opt/couchbase/var
+3
View File
@@ -0,0 +1,3 @@
#!/bin/sh
echo "Running in Docker container - $0 not available"
+59
View File
@@ -0,0 +1,59 @@
#!/bin/bash
set -e
staticConfigFile=/opt/couchbase/etc/couchbase/static_config
restPortValue=8091
# see https://developer.couchbase.com/documentation/server/current/install/install-ports.html
function overridePort() {
portName=$1
portNameUpper=$(echo $portName | awk '{print toupper($0)}')
portValue=${!portNameUpper}
# only override port if value available AND not already contained in static_config
if [ "$portValue" != "" ]; then
if grep -Fq "{${portName}," ${staticConfigFile}
then
echo "Don't override port ${portName} because already available in $staticConfigFile"
else
echo "Override port '$portName' with value '$portValue'"
echo "{$portName, $portValue}." >> ${staticConfigFile}
if [ ${portName} == "rest_port" ]; then
restPortValue=${portValue}
fi
fi
fi
}
overridePort "rest_port"
overridePort "mccouch_port"
overridePort "memcached_port"
overridePort "query_port"
overridePort "ssl_query_port"
overridePort "fts_http_port"
overridePort "moxi_port"
overridePort "ssl_rest_port"
overridePort "ssl_capi_port"
overridePort "ssl_proxy_downstream_port"
overridePort "ssl_proxy_upstream_port"
[[ "$1" == "couchbase-server" ]] && {
if [ "$(whoami)" = "couchbase" ]; then
# Ensure that /opt/couchbase/var is owned by user 'couchbase' and
# is writable
if [ ! -w /opt/couchbase/var -o \
$(find /opt/couchbase/var -maxdepth 0 -printf '%u') != "couchbase" ]; then
echo "/opt/couchbase/var is not owned and writable by UID 1000"
echo "Aborting as Couchbase Server will likely not run"
exit 1
fi
fi
echo "Starting Couchbase Server -- Web UI available at http://<ip>:$restPortValue"
echo "and logs available in /opt/couchbase/var/lib/couchbase/logs"
exec /usr/sbin/runsvdir-start
}
exec "$@"
+19
View File
@@ -0,0 +1,19 @@
#!/bin/sh
exec 2>&1
# Create directories where couchbase stores its data
cd /opt/couchbase
mkdir -p var/lib/couchbase \
var/lib/couchbase/config \
var/lib/couchbase/data \
var/lib/couchbase/stats \
var/lib/couchbase/logs \
var/lib/moxi
chown -R couchbase:couchbase var
if [ $(whoami) = "couchbase" ]; then
exec /opt/couchbase/bin/couchbase-server -- -kernel global_enable_tracing false -noinput
else
exec chpst -ucouchbase /opt/couchbase/bin/couchbase-server -- -kernel global_enable_tracing false -noinput
fi