Diabolical solution for custom entrypoint

This commit is contained in:
3wc 2020-09-07 23:04:41 +02:00
parent 665de8b1fc
commit 212d0196e5
2 changed files with 23 additions and 17 deletions

View File

@ -37,6 +37,9 @@ services:
configs: configs:
- source: LocalSettings_conf - source: LocalSettings_conf
target: /var/www/html/LocalSettings.php target: /var/www/html/LocalSettings.php
- source: entrypoint2_conf
target: /docker-entrypoint2.sh
mode: 0555
depends_on: depends_on:
- mariadb - mariadb
secrets: secrets:
@ -53,7 +56,7 @@ services:
- "traefik.http.routers.${STACK_NAME}.rule=Host(`${DOMAIN}`)" - "traefik.http.routers.${STACK_NAME}.rule=Host(`${DOMAIN}`)"
- "traefik.http.routers.${STACK_NAME}.entrypoints=web-secure" - "traefik.http.routers.${STACK_NAME}.entrypoints=web-secure"
- "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}" - "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}"
entrypoint: ./entrypoint.sh entrypoint: /docker-entrypoint2.sh
volumes: volumes:
mariadb: mariadb:
@ -67,10 +70,10 @@ networks:
secrets: secrets:
db_root_password: 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 external: true
db_password: db_password:
name: ${STACK_NAME}_db_password_${DB_PASSWD_VERSION} name: ${STACK_NAME}_db_password_${DB_PASSWORD_VERSION}
external: true external: true
configs: configs:
@ -78,3 +81,7 @@ configs:
name: ${STACK_NAME}_local_settings_${LOCAL_SETTINGS_CONF_VERSION} name: ${STACK_NAME}_local_settings_${LOCAL_SETTINGS_CONF_VERSION}
file: LocalSettings.php.tmpl file: LocalSettings.php.tmpl
template_driver: golang template_driver: golang
entrypoint2_conf:
name: ${STACK_NAME}_entrypoint2_${ENTRYPOINT_CONF_VERSION}
file: entrypoint.sh
template_driver: golang

27
entrypoint.sh Normal file → Executable file
View File

@ -2,28 +2,27 @@
set -eu -o pipefail set -eu -o pipefail
run_install() { init_db() {
set -eu set -eu
php /var/www/html/maintenance/install.php apt update && apt install -y mariadb-client
--server ${DOMAIN}
--dbuser mediawiki PASSWORD=`cat /run/secrets/db_password`
--dbpass `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)
--dbserver mariadb
--confpath /var/www/html/ if [[ "${TABLE_COUNT}" == "0" ]]; then
--dbname mediawiki mysql -u mediawiki --password="$PASSWORD" -h mariadb mediawiki < /var/www/html/maintenance/tables.sql
--pass `cat /run/secrets/admin_password` else
--scriptpath '' php /var/www/html/maintenance/update.php
'${MEDIAWIKI_SITENAME}' fi
Admin
} }
main() { main() {
set -eu set -eu
run_install init_db
} }
main main
/docker-entrypoint "$@" /docker-entrypoint.sh apache2-foreground "$@"