From 7b2207d39a37844d58827d5bd12f7274e12db657 Mon Sep 17 00:00:00 2001 From: 3wc <3wc.git@doesthisthing.work> Date: Sun, 6 Sep 2020 19:22:10 +0200 Subject: [PATCH 1/4] Initial stab at LocalSettings.php creation --- LocalSettings.php | 162 ++++++++++++++++++++++++++++++++++++++++++++++ compose.yml | 15 +++++ 2 files changed, 177 insertions(+) create mode 100644 LocalSettings.php diff --git a/LocalSettings.php b/LocalSettings.php new file mode 100644 index 0000000..e65582a --- /dev/null +++ b/LocalSettings.php @@ -0,0 +1,162 @@ + 'http://localhost:8000/', + // Parsoid "domain" (string, optional) - MediaWiki >= 1.26 + 'domain' => 'localhost', + // Parsoid "prefix" (string, optional) - deprecated since MediaWiki 1.26, use 'domain' + 'prefix' => 'localhost', + // Forward cookies in the case of private wikis (string or false, optional) + 'forwardCookies' => true, + // request timeout in seconds (integer or null, optional) + 'timeout' => null, + // Parsoid HTTP proxy (string or null, optional) + 'HTTPProxy' => null, + // whether to parse URL as if they were meant for RESTBase (boolean or null, optional) + 'restbaseCompat' => null, +]; diff --git a/compose.yml b/compose.yml index 844cd79..4100baa 100644 --- a/compose.yml +++ b/compose.yml @@ -27,11 +27,20 @@ services: environment: - DOMAIN=${DOMAIN} - STACK_NAME=${STACK_NAME} + - MEDIAWIKI_EMAIL_CONTACT=${MEDIAWIKI_EMAIL_CONTACT} + - MEDIAWIKI_EMAIL_FROM=${MEDIAWIKI_EMAIL_FROM} + - MEDIAWIKI_SITENAME=${MEDIAWIKI_SITENAME} + - MEDIAWIKI_SITENAMESPACE=${MEDIAWIKI_SITENAMESPACE} volumes: - 'mediawiki:/var/www/html' - 'parsoid:/usr/lib/parsoid' + configs: + - source: LocalSettings_conf + target: /var/www/html/LocalSettings.php depends_on: - mariadb + secrets: + - db_password networks: - proxy - internal @@ -62,3 +71,9 @@ secrets: db_password: name: ${STACK_NAME}_db_password_${DB_PASSWD_VERSION} external: true + +configs: + LocalSettings_conf: + name: ${STACK_NAME}_local_settings_${LOCAL_SETTINGS_CONF_VERSION} + file: LocalSettings.php + template_driver: golang From 665de8b1fc91bf8be22b9a43517d3bfac8042faf Mon Sep 17 00:00:00 2001 From: 3wc <3wc.git@doesthisthing.work> Date: Mon, 7 Sep 2020 21:09:46 +0200 Subject: [PATCH 2/4] [BROKEN] Progress towards running install.php --- LocalSettings.php => LocalSettings.php.tmpl | 0 compose.yml | 7 ++--- entrypoint.sh | 29 +++++++++++++++++++++ 3 files changed, 33 insertions(+), 3 deletions(-) rename LocalSettings.php => LocalSettings.php.tmpl (100%) create mode 100644 entrypoint.sh diff --git a/LocalSettings.php b/LocalSettings.php.tmpl similarity index 100% rename from LocalSettings.php rename to LocalSettings.php.tmpl diff --git a/compose.yml b/compose.yml index 4100baa..df5d2bd 100644 --- a/compose.yml +++ b/compose.yml @@ -32,7 +32,7 @@ services: - MEDIAWIKI_SITENAME=${MEDIAWIKI_SITENAME} - MEDIAWIKI_SITENAMESPACE=${MEDIAWIKI_SITENAMESPACE} volumes: - - 'mediawiki:/var/www/html' + - 'mediawiki_images:/var/www/html/images' - 'parsoid:/usr/lib/parsoid' configs: - source: LocalSettings_conf @@ -53,10 +53,11 @@ services: - "traefik.http.routers.${STACK_NAME}.rule=Host(`${DOMAIN}`)" - "traefik.http.routers.${STACK_NAME}.entrypoints=web-secure" - "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}" + entrypoint: ./entrypoint.sh volumes: mariadb: - mediawiki: + mediawiki_images: parsoid: networks: @@ -75,5 +76,5 @@ secrets: configs: LocalSettings_conf: name: ${STACK_NAME}_local_settings_${LOCAL_SETTINGS_CONF_VERSION} - file: LocalSettings.php + file: LocalSettings.php.tmpl template_driver: golang diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 0000000..d417adc --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +set -eu -o pipefail + +run_install() { + set -eu + + php /var/www/html/maintenance/install.php + --server ${DOMAIN} + --dbuser mediawiki + --dbpass `cat /run/secrets/db_password` + --dbserver mariadb + --confpath /var/www/html/ + --dbname mediawiki + --pass `cat /run/secrets/admin_password` + --scriptpath '' + '${MEDIAWIKI_SITENAME}' + Admin +} + +main() { + set -eu + + run_install +} + +main + +/docker-entrypoint "$@" From 212d0196e5097a861311a27fd45080a58da40d92 Mon Sep 17 00:00:00 2001 From: 3wc <3wc.git@doesthisthing.work> Date: Mon, 7 Sep 2020 23:04:41 +0200 Subject: [PATCH 3/4] Diabolical solution for custom entrypoint --- compose.yml | 13 ++++++++++--- entrypoint.sh | 27 +++++++++++++-------------- 2 files changed, 23 insertions(+), 17 deletions(-) mode change 100644 => 100755 entrypoint.sh diff --git a/compose.yml b/compose.yml index df5d2bd..cafb686 100644 --- a/compose.yml +++ b/compose.yml @@ -37,6 +37,9 @@ services: configs: - source: LocalSettings_conf target: /var/www/html/LocalSettings.php + - source: entrypoint2_conf + target: /docker-entrypoint2.sh + mode: 0555 depends_on: - mariadb secrets: @@ -53,7 +56,7 @@ services: - "traefik.http.routers.${STACK_NAME}.rule=Host(`${DOMAIN}`)" - "traefik.http.routers.${STACK_NAME}.entrypoints=web-secure" - "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}" - entrypoint: ./entrypoint.sh + entrypoint: /docker-entrypoint2.sh volumes: mariadb: @@ -67,10 +70,10 @@ networks: secrets: db_root_password: - name: ${STACK_NAME}_db_root_password_${DB_ROOT_PASSWD_VERSION} + name: ${STACK_NAME}_db_root_password_${DB_ROOT_PASSWORD_VERSION} external: true db_password: - name: ${STACK_NAME}_db_password_${DB_PASSWD_VERSION} + name: ${STACK_NAME}_db_password_${DB_PASSWORD_VERSION} external: true configs: @@ -78,3 +81,7 @@ configs: name: ${STACK_NAME}_local_settings_${LOCAL_SETTINGS_CONF_VERSION} file: LocalSettings.php.tmpl template_driver: golang + entrypoint2_conf: + name: ${STACK_NAME}_entrypoint2_${ENTRYPOINT_CONF_VERSION} + file: entrypoint.sh + template_driver: golang diff --git a/entrypoint.sh b/entrypoint.sh old mode 100644 new mode 100755 index d417adc..1ce4733 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -2,28 +2,27 @@ set -eu -o pipefail -run_install() { +init_db() { set -eu - php /var/www/html/maintenance/install.php - --server ${DOMAIN} - --dbuser mediawiki - --dbpass `cat /run/secrets/db_password` - --dbserver mariadb - --confpath /var/www/html/ - --dbname mediawiki - --pass `cat /run/secrets/admin_password` - --scriptpath '' - '${MEDIAWIKI_SITENAME}' - Admin + apt update && apt install -y mariadb-client + + PASSWORD=`cat /run/secrets/db_password` + TABLE_COUNT=$(mysql -u mediawiki --password="$PASSWORD" -h mariadb mediawiki -e "SELECT count(*) AS TOTAL FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'mediawiki';" -N -B) + + if [[ "${TABLE_COUNT}" == "0" ]]; then + mysql -u mediawiki --password="$PASSWORD" -h mariadb mediawiki < /var/www/html/maintenance/tables.sql + else + php /var/www/html/maintenance/update.php + fi } main() { set -eu - run_install + init_db } main -/docker-entrypoint "$@" +/docker-entrypoint.sh apache2-foreground "$@" From 13b42a8cf95678d544390ed1564da553031e53cc Mon Sep 17 00:00:00 2001 From: 3wc <3wc.git@doesthisthing.work> Date: Mon, 7 Sep 2020 23:12:57 +0200 Subject: [PATCH 4/4] Additional settings in .envrc.sample --- .envrc.sample | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.envrc.sample b/.envrc.sample index 62d3083..f004c62 100644 --- a/.envrc.sample +++ b/.envrc.sample @@ -10,3 +10,5 @@ export MEDIAWIKI_EMAIL_FROM="wiki@wiki.example.com" export DB_ROOT_PASSWD_VERSION=v1 export DB_PASSWD_VERSION=v1 +export LOCAL_SETTINGS_CONF_VERSION=v1 +export ENTRYPOINT_CONF_VERSION=v1