From 66b1bce16cf42461185060f999724b775bb0a2cb Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sat, 9 Dec 2017 09:49:17 +0100 Subject: Add Docker config --- util/docker-init.sh | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100755 util/docker-init.sh (limited to 'util') diff --git a/util/docker-init.sh b/util/docker-init.sh new file mode 100755 index 00000000..dce2339c --- /dev/null +++ b/util/docker-init.sh @@ -0,0 +1,87 @@ +#!/bin/sh + +if ! test -f /var/vndb-docker-image; then + echo "This script should only be run from within the VNDB docker container." + echo "Check the README for instructions." + exit 1 +fi + + +mkdevuser() { + # Create a new user with the same UID and GID as the owner of the VNDB + # directory. This allows for convenient exchange of files without worrying + # about permission stuff. + USER_UID=`stat -c '%u' /var/www` + USER_GID=`stat -c '%g' /var/www` + groupadd -g $USER_GID devgroup + useradd -u $USER_UID -g $USER_GID -m -s /bin/bash devuser + + # So you can easily do a 'psql -U vndb' + echo '*:*:*:vndb:vndb' >/home/devuser/.pgpass + echo '*:*:*:vndb_site:vndb_site' >>/home/devuser/.pgpass + echo '*:*:*:vndb_multi:vndb_multi' >>/home/devuser/.pgpass + chown devuser /home/devuser/.pgpass + chmod 600 /home/devuser/.pgpass +} + + +pg_start() { + echo 'local all postgres peer' >/etc/postgresql/9.6/main/pg_hba.conf + echo 'local all all md5' >>/etc/postgresql/9.6/main/pg_hba.conf + # I'm glad Ubuntu 17.10 still has an init script for this + /etc/init.d/postgresql start +} + + +pg_init() { + if test -f /var/lib/postgresql/vndb-init-done; then + echo "Database initialization already done." + echo "Run the following as root to bypass this check:" + echo " rm /var/lib/postgresql/vndb-init-done" + return + fi + su postgres -c '/var/www/util/docker-init.sh pg_load_superuser' + su devuser -c '/var/www/util/docker-init.sh pg_load_vndb' + touch /var/lib/postgresql/vndb-init-done +} + +# Should run as the postgres user +pg_load_superuser() { + psql -f /var/www/util/sql/superuser_init.sql + echo "ALTER ROLE vndb LOGIN UNENCRYPTED PASSWORD 'vndb'" | psql -U postgres + echo "ALTER ROLE vndb_site LOGIN UNENCRYPTED PASSWORD 'vndb_site'" | psql -U postgres + echo "ALTER ROLE vndb_multi LOGIN UNENCRYPTED PASSWORD 'vndb_multi'" | psql -U postgres +} + +# Should run as devuser +pg_load_vndb() { + cd /var/www + psql -U vndb -f util/sql/all.sql +} + + +# Should run as devuser +devshell() { + cd /var/www + make && util/vndb.pl + bash +} + + +case "$1" in + '') + mkdevuser + pg_start + pg_init + exec su devuser -c '/var/www/util/docker-init.sh devshell' + ;; + pg_load_superuser) + pg_load_superuser + ;; + pg_load_vndb) + pg_load_vndb + ;; + devshell) + devshell + ;; +esac -- cgit v1.2.3