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 "$@"