mediawiki/Dockerfile
paul 5cfd3c1641 chore: update to mediawiki 1.37
- Bump dependencies
- Remove deprecated dependencies
- Use Semantic Media Wiki 4
- Add helper scripts for local testing
- Add S3 capabilities
- Add RemoteUser capabilities

This makes it almost possible to use this image stateless.
SMW adds a config file on installation, this is tracked in Issue #2

Co-authored-by: Paul <paul@zom.bi>
Reviewed-on: #1
2022-03-19 12:49:52 +01:00

113 lines
3.8 KiB
Docker

FROM mediawiki:1.37.1
ENV \
WG_SITENAME="Test Wiki" \
WG_SCRIPT_PATH="" \
WG_SERVER="https://wiki.example.com" \
SEMANTIC_URL="wiki.example.com" \
WG_ENABLE_UPLOADS="0" \
WG_USE_INSTANT_COMMONS="0" \
WG_ENABLE_EMAIL="0" \
WG_UPLOAD_PATH="/uploads" \
WG_META_NAMESPACE="Meta" \
WG_LANGUAGE_CODE="en" \
MEDIAWIKI_ADMIN_USER="admin" \
MEDIAWIKI_ADMIN_PASS="password" \
WG_DB_TYPE="sqlite" \
WG_DB_SERVER="" \
WG_DB_PORT="" \
WG_DB_NAME="my_wiki" \
WG_DB_USER="mediawiki" \
WG_DB_PASSWORD="password" \
WG_DB_PREFIX="" \
WG_DB_MWSCHEMA="" \
WG_DATABASE_DIR="/var/www/data" \
WG_SECRET_KEY="0000000000000000000000000000000000000000000000000000000000000000" \
WG_EMERGENCY_CONTACT="admin@example.com" \
WG_PASSWORD_SENDER="wiki@example.com" \
ALLOW_PUBLIC_REGISTRATION="0" \
ALLOW_AUTO_REGISTRATION="1" \
ALLOW_PUBLIC_EDIT="0" \
ALLOW_PUBLIC_READ="1" \
USE_REMOTE_AUTH="0" \
DISABLE_ICONS="0" \
S3_ENDPOINT="https://s3.us-east-1.amazonaws.com" \
S3_INSECURE="0" \
S3_KEY="" \
S3_SECRET="" \
S3_REGION="us-east-1" \
S3_BUCKET_DOMAIN_NAME="\$1.s3.amazonaws.com" \
S3_BUCKET_NAME="" \
S3_SUBDIRECTORY="" \
DEBUG="0"
# System dependencies for extensions
RUN set -eu; \
apt-get update; \
apt-get install -y --no-install-recommends \
zip \
unzip \
libpq-dev \
cron \
rclone \
; \
rm -rf /var/lib/apt/lists/*
# PHP extensions
RUN set -eu; \
docker-php-ext-install -j$(nproc) pgsql; \
docker-php-ext-install -j$(nproc) pdo_pgsql
RUN set -eu; \
mkdir /var/www/conf; \
mkdir -p /var/www/html/extensions; \
mkdir -p /var/www/localstore/smwconfig; \
mkdir -p /var/www/localstore/images
# Non-composer based extensions
# JsonConfig required by Graph.
RUN set -eu; \
cd /var/www/html/extensions \
&& git clone https://github.com/edwardspec/mediawiki-aws-s3.git AWS && bash -c "(cd AWS && git checkout be6887a53a0e0fbe3e129cab8d0bae1bd7820cb2)" \
&& curl https://extdist.wmflabs.org/dist/extensions/JsonConfig-REL1_37-becf774.tar.gz |tar -xz \
&& curl https://extdist.wmflabs.org/dist/extensions/Graph-REL1_37-5a47efe.tar.gz |tar -xz \
&& curl https://extdist.wmflabs.org/dist/extensions/SubPageList3-REL1_37-fae904e.tar.gz |tar -xz \
&& curl https://extdist.wmflabs.org/dist/extensions/MsUpload-REL1_37-1698666.tar.gz |tar -xz \
&& curl https://extdist.wmflabs.org/dist/extensions/TemplateStyles-REL1_37-eec8c6c.tar.gz |tar -xz \
&& curl https://extdist.wmflabs.org/dist/extensions/Auth_remoteuser-REL1_37-267291a.tar.gz |tar -xz
# Install composer packages
COPY --from=composer:2.1 /usr/bin/composer /usr/bin/composer
RUN set -eu; \
ln -s /var/www/conf/LocalSettings.local.php /var/www/html/LocalSettings.local.php; \
ln -s /var/www/conf/LocalSettings.php /var/www/html/LocalSettings.php
# Make AWS (S3) dependencies installable
RUN echo '{"extra": {"merge-plugin": {"include": ["extensions/AWS/composer.json"]}}}' > composer.local.json
# Install SMB via composer
# css-sanitizer is a dependency of TemplateStyles
RUN composer require --with-all-dependencies --no-update \
wikimedia/css-sanitizer:"3.0.2" \
mediawiki/semantic-media-wiki:"~4.0.0" \
mediawiki/semantic-result-formats:"~4.0.1" \
mediawiki/maps:"~9.0.7" \
mediawiki/mermaid:"~3.0.1" \
mediawiki/semantic-extra-special-properties:"~3.0.1" \
mediawiki/semantic-compound-queries:"~2.2.0" \
mediawiki/page-forms:"~5.3.4" \
mediawiki/semantic-scribunto:"~2.2.0"
RUN composer update
# Place config files
COPY conf/* /var/www/conf/
COPY 000-default.conf /etc/apache2/sites-available
# Place our maintenence and setup scripts
COPY scripts/* /usr/local/bin/
RUN chmod 755 /usr/local/bin/*
# Add crontab file in the cron directory
ADD crontab /etc/crontab
RUN chmod 0644 /etc/crontab