Changeset View
Changeset View
Standalone View
Standalone View
roles/paas-docker/wrappers/files/phpbb.sh
Show All 16 Lines | |||||
# </auto-generated> | # </auto-generated> | ||||
# ------------------------------------------------------------- | # ------------------------------------------------------------- | ||||
# Configuration required by Docker | # Configuration required by Docker | ||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||||
MYSQL_CONTAINER=phpbb_db | MYSQL_CONTAINER=phpbb_db | ||||
MYSQL_IMAGE=nasqueron/mysql | MYSQL_IMAGE=nasqueron/mysql | ||||
MYSQL_HOST=phpbb-db.equatower.ulubis | |||||
SERVICE_DIR=/srv/phpbb | |||||
# ------------------------------------------------------------- | # ------------------------------------------------------------- | ||||
# Helper methods | # Helper methods | ||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||||
error() { | |||||
echo "$@" 1>&2; | |||||
} | |||||
getcommandname() { | getcommandname() { | ||||
basename "$0" | basename "$0" | ||||
} | } | ||||
usage() { | usage() { | ||||
echo "Usage: $(getcommandname) <command>" | error "Usage: $(getcommandname) <command>" | ||||
exit 1 | exit 1 | ||||
} | } | ||||
unknown_command() { | unknown_command() { | ||||
echo "$(getcommandname): $COMMAND: unknown command" | error "$(getcommandname): $COMMAND: unknown command" | ||||
usage | usage | ||||
} | } | ||||
# ------------------------------------------------------------- | # ------------------------------------------------------------- | ||||
# Enviroment files methods | |||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |||||
ensure_environment_file_exists() { | |||||
[ -f "$1" ] || populate_environment_files | |||||
[ -f "$1" ] || help_create_container | |||||
} | |||||
populate_environment_files() { | |||||
cd $SERVICE_DIR/sites || exit 32 | |||||
make | |||||
} | |||||
help_create_container() { | |||||
error "No environment information for container $CONTAINER" | |||||
error "If this is a new forum, you need first to populate the sites db." | |||||
error "To do so, run '$(getcommandname) add $CONTAINER'" | |||||
exit 16 | |||||
} | |||||
# ------------------------------------------------------------- | |||||
# Commands | # Commands | ||||
# | # | ||||
# :: phpbb storage: connects to MySQL database | # :: phpbb storage: connects to MySQL database | ||||
# :: phpbb add: populates site database with the new forum | |||||
# :: phpbb run: creates and starts the forum container | |||||
# :: phpbb postinstall: cleans install and provides config | |||||
# :: phpbb etc-hosts: prints a /etc/host entry for MySQL container | |||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||||
phpbb_storage() { | phpbb_storage() { | ||||
# shellcheck disable=SC2016 | # shellcheck disable=SC2016 | ||||
docker run -it --rm --link $MYSQL_CONTAINER:mysql $MYSQL_IMAGE \ | docker run -it --rm --link $MYSQL_CONTAINER:mysql $MYSQL_IMAGE \ | ||||
sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"' | sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"' | ||||
} | } | ||||
phpbb_site_add() { | |||||
if [ $# -lt 2 ]; then | |||||
error "Usage: $(getcommandname) $COMMAND <forum identifier> <host>" | |||||
exit 2 | |||||
fi | |||||
ID=$1 | |||||
SITE_HOST=$2 | |||||
sqlite3 -batch $SERVICE_DIR/sites/sites.db <<EOF | |||||
INSERT INTO sites | |||||
(id, host, db_user, db_password, db_prefix, active) | |||||
VALUES | |||||
("$ID", "$SITE_HOST", "$ID", "$PASSWORD", "phpbb_", 1); | |||||
EOF | |||||
run_maintenance_script createdb "$ID" | |||||
} | |||||
phpbb_container_run() { | |||||
if [ $# -lt 1 ]; then | |||||
error "$(getcommandname): $COMMAND: missing forum identifier" | |||||
exit 2 | |||||
fi | |||||
ID=$1 | |||||
CONTAINER=phpbb_$ID | |||||
# Environment information is extracted from a SQLite database | |||||
ENV_FILE=$SERVICE_DIR/sites/containers-env/$ID | |||||
ensure_environment_file_exists "$ENV_FILE" | |||||
# Loads environment for this container | |||||
# shellcheck disable=1090 | |||||
. "$ENV_FILE" | |||||
[ -z "$SITE_HOST" ] && error "Enviroment isn't correctly defined." && exit 8 | |||||
echo "TODO: switch to nasqueron/phpbb image." | |||||
docker run -d \ | |||||
-v "/home/dereckson/dev/docker/phpbb/phpBB3:/var/wwwroot/default" \ | |||||
-v "$SERVICE_DIR/data/$SITE_HOST/cache:/var/wwwroot/default/cache" \ | |||||
-v "$SERVICE_DIR/data/$SITE_HOST/config:/var/wwwroot/default/config" \ | |||||
-v "$SERVICE_DIR/data/$SITE_HOST/ext:/var/wwwroot/default/ext" \ | |||||
-v "$SERVICE_DIR/data/$SITE_HOST/files:/var/wwwroot/default/files" \ | |||||
-v "$SERVICE_DIR/data/$SITE_HOST/images:/var/wwwroot/default/images" \ | |||||
-v "$SERVICE_DIR/data/$SITE_HOST/store:/var/wwwroot/default/store" \ | |||||
-v "$SERVICE_DIR/run/$SITE_HOST:/run/nginx" \ | |||||
-e "PHPBB_DB_HOST=$MYSQL_HOST" \ | |||||
-e "PHPBB_DB_USER=$DB_USER" \ | |||||
-e "PHPBB_DB_PASSWORD=$DB_PASSWORD" \ | |||||
-e "PHPBB_DB_NAME=$ID" \ | |||||
--name "$CONTAINER" nasqueron/nginx-php7-fpm | |||||
} | |||||
phpbb_post_install() { | |||||
if [ $# -lt 1 ]; then | |||||
echo "$(getcommandname): $COMMAND: missing container name" | |||||
exit 2 | |||||
fi | |||||
CONTAINER=phpbb_$1 | |||||
docker exec "$CONTAINER" cp /usr/share/saas-phpbb/config.php /var/wwwroot/default/ | |||||
docker exec "$CONTAINER" rm -rf /var/wwwroot/default/install | |||||
} | |||||
phpbb_etc_hosts() { | |||||
SELECT_IP=".[0].NetworkSettings.IPAddress" | |||||
MYSQL_CONTAINER_IP=$(docker inspect $MYSQL_CONTAINER | jq -r "$SELECT_IP") | |||||
echo "$MYSQL_CONTAINER_IP $MYSQL_HOST" | |||||
} | |||||
# ------------------------------------------------------------- | # ------------------------------------------------------------- | ||||
# Check arguments | # Check arguments | ||||
# | # | ||||
# $1: wiki name (database name or alias) | # $1: wiki name (database name or alias) | ||||
# $2: script to call | # $2: script to call | ||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||||
if [ $# -lt 1 ]; then | if [ $# -lt 1 ]; then | ||||
usage | usage | ||||
fi | fi | ||||
COMMAND=$1 | COMMAND=$1 | ||||
shift 1 | shift 1 | ||||
# ------------------------------------------------------------- | # ------------------------------------------------------------- | ||||
# Run command | # Run command | ||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||||
if [ "$COMMAND" = "storage" ]; then | if [ "$COMMAND" = "storage" ]; then | ||||
phpbb_storage | phpbb_storage | ||||
elif [ "$COMMAND" = "postinstall" ]; then | |||||
phpbb_post_install "$1" | |||||
elif [ "$COMMAND" = "add" ]; then | |||||
phpbb_site_add "$1" | |||||
elif [ "$COMMAND" = "run" ]; then | |||||
phpbb_container_run "$1" | |||||
elif [ "$COMMAND" = "etc-hosts" ]; then | |||||
phpbb_etc_hosts $MYSQL_CONTAINER | |||||
else | else | ||||
unknown_command | unknown_command | ||||
fi | fi |
Nasqueron DevCentral · If it had been much bigger the moon would have had a core of ice. · Powered by Phabricator