Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions monetdb/centos7/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
FROM registry.centos.org/centos/centos:7

MAINTAINER Mohammed Zeeshan Ahmed <[email protected]>

#RUN yum -y update && yum clean all

RUN mkdir -p /opt/scripts

ADD install.sh fix-permissions.sh run.sh passwd.template supervisord.conf.template /opt/scripts/

RUN . /opt/scripts/install.sh

USER monetdb

EXPOSE 50000

WORKDIR /var/monetdbdata

ENTRYPOINT ["/opt/scripts/run.sh"]
CMD ["monetdb"]
9 changes: 9 additions & 0 deletions monetdb/centos7/fix-permissions.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/usr/bin/env bash
# Fix permissions on the given directory to allow group read/write of
# regular files and execute of directories.
set -eux
find "$1" -exec chown ${2} {} \;
find "$1" -exec chgrp 0 {} \;
find "$1" -exec chmod g+rw {} \;
find "$1" -type d -exec chmod g+x {} +

47 changes: 47 additions & 0 deletions monetdb/centos7/install.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
#!/usr/bin/env bash

# Initialize Variables

set -eux;

EPEL="epel-release";
BASIC_PACKAGES="nss_wrapper gettext supervisor";
TMP_PAKCAGES="wget";

MONETDB_REPO="http://dev.monetdb.org/downloads/epel/MonetDB-release-epel-1.1-1.monetdb.noarch.rpm";
MONETDB_GPG_KEY="http://dev.monetdb.org/downloads/MonetDB-GPG-KEY";

CORE_PACKAGES="MonetDB-SQL-server5-hugeint MonetDB-client";

MONETDB_HOME="/opt/monetdb"
MONETDB_DATA="/var/monetdbdata"
MONETDB_FARM_DIR="${MONETDB_DATA}/db"

# Install begins

# * Create monetdbuser

useradd -u 1001 -g 0 -d ${MONETDB_HOME} monetdb;
mkdir -p ${MONETDB_DATA} && touch ${MONETDB_HOME}/supervisord.conf

# * EPEL and basic packages

yum -y install ${EPEL} && yum -y install ${BASIC_PACKAGES} ${TMP_PAKCAGES};

# * MonetDB Repo Setup

rpm --import ${MONETDB_GPG_KEY} && yum -y install ${MONETDB_REPO};

# * MonetDB Packages

yum -y install ${CORE_PACKAGES};

# * Fix the permissions

for item in ${MONETDB_HOME} ${MONETDB_DATA}; do
. /opt/scripts/fix-permissions.sh ${item} monetdb;
chmod -R g+s ${item};
done

# Clean up
yum -y remove ${TMP_PAKCAGES} && yum clean all;
15 changes: 15 additions & 0 deletions monetdb/centos7/passwd.template
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
monetdb:x:${USER_ID}:${GROUP_ID}:Apache User:${HOME}:/bin/bash

94 changes: 94 additions & 0 deletions monetdb/centos7/run.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
#!/usr/bin/env bash

set -eux;

# Permissions
export USER_ID=$(id -u);
export GROUP_ID=$(id -g);
export HOME="/opt/monetdb"
envsubst < /opt/scripts/passwd.template > /tmp/passwd;
export LD_PRELOAD=libnss_wrapper.so;
export NSS_WRAPPER_PASSWD=/tmp/passwd;
export NSS_WRAPPER_GROUP=/etc/group;

export DATABASE_NAME=${DATABASE_NAME:-"db"};
export DATABASE_USER=${DATABASE_USER:-"monetdb"}
export DATABASE_PASSWD=${DATABASE_PASSWD:-"monetdb"}
export DATABASE_OLD_PASSWD=${DATABASE_OLD_PASSWD:-"monetdb"}

MONETDB_DATA="/var/monetdbdata";
MONETDB_FARM_DIR="${MONETDB_DATA}/db";
MONETDB_DATABASE_LOCATION="${MONETDB_FARM_DIR}/${DATABASE_NAME}"

TOUCH_PASSWD(){
USR=$1
PASSWD=$2
PASSWD_FILE="${HOME}/.monetdb"
echo -e "user=${USR}\npassword=${PASSWD}" > ${PASSWD_FILE}
}

DEL_PASSWD(){

rm -rf "${HOME}/.monetdb"

}

SET_PASSWORD(){

echo "Setting new password for database ${DATABASE_NAME} and user ${DATABASE_USER}";
TOUCH_PASSWD ${DATABASE_USER} ${DATABASE_OLD_PASSWD};
mclient -d ${DATABASE_NAME} -s "ALTER USER SET PASSWORD '${DATABASE_PASSWD}' USING OLD PASSWORD '${DATABASE_OLD_PASSWD}'";
DEL_PASSWD;
}

SETUP(){

if [ ! -d ${MONETDB_FARM_DIR} ]; then
monetdbd create ${MONETDB_FARM_DIR};
monetdbd set listenaddr=0.0.0.0 ${MONETDB_FARM_DIR};
monetdbd start ${MONETDB_FARM_DIR};
TOUCH_PASSWD ${DATABASE_USER} ${DATABASE_OLD_PASSWD};
sleep 5;

if [ ! -d ${MONETDB_DATABASE_LOCATION} ]; then
monetdb create ${DATABASE_NAME} && monetdb set embedr=true ${DATABASE_NAME} && monetdb release \
${DATABASE_NAME};

else
echo "Existing database found at ${MONETDB_DATABASE_LOCATION}"
fi

for i in {30..0}; do
echo "Testing connection..." $i;
mclient -d ${DATABASE_NAME} -s 'SELECT 1' &> /dev/null;
if [ $? -ne 0 ]; then
echo "Waiting for cdb to start...";
sleep 1;
else
echo "MonetDB is running....";
break;
fi
done

if [ $i -eq 0 ]; then
echo "MonetDB startup failed";
exit 1;
fi

SET_PASSWORD;
monetdb stop ${DATABASE_NAME};
rm -rf .monetdb
sleep 10;
echo "Setup complete...";
fi

}


if [ $1 == "monetdb" ]; then
SETUP;
envsubst < /opt/scripts/supervisord.conf.template > ${HOME}/supervisord.conf
/usr/bin/supervisord -c ${HOME}/supervisord.conf
else
exec $@
fi
13 changes: 13 additions & 0 deletions monetdb/centos7/supervisord.conf.template
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
[supervisord]
nodaemon=true
logfile=/tmp/supervisord.log

[program:monetdbd]
command=monetdbd start /var/monetdbdata/db/${DATABASE_NAME}
autorestart=false
redirect_stderr=true
stdout_logfile=syslog
stderr_logfile=syslog
priority=1
exitcodes=0
startsecs=0