forked from MaRDI4NFDI/docker-wikibase
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile
More file actions
147 lines (117 loc) · 5 KB
/
Copy pathDockerfile
File metadata and controls
147 lines (117 loc) · 5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
######################
# Global settings
######################
ARG MEDIAWIKI_VERSION=stable-fpm
################
# Fetcher
################
FROM ubuntu:jammy AS fetcher
RUN apt-get update && \
apt-get install --yes --no-install-recommends git=1:2.* ssh unzip=6.* jq=1.* curl=7.* ca-certificates patch && \
apt-get install --reinstall ca-certificates && \
apt-get clean && rm -rf /var/lib/apt/lists/*
WORKDIR /
COPY wikibase-submodules-from-github-instead-of-phabricator.patch clone_all.sh ./
RUN bash clone_all.sh
################
# Composer
################
FROM mediawiki:${MEDIAWIKI_VERSION} AS build
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive \
apt-get install --yes --no-install-recommends \
zlib1g-dev libjpeg-dev libpng-dev libfreetype6-dev libzip-dev zip && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
RUN set -xe && \
docker-php-ext-configure gd --with-freetype --with-jpeg && \
docker-php-ext-install gd && \
docker-php-ext-enable gd && \
docker-php-ext-install zip
RUN rm -rf /var/www/html/*
COPY --from=fetcher /mediawiki /var/www/html
COPY --from=composer /usr/bin/composer /usr/bin/composer
COPY composer.local.json /var/www/html/composer.local.json
WORKDIR /var/www/html/
ENV COMPOSER_ALLOW_SUPERUSER=1
RUN git config --global --add safe.directory /var/www/html && \
composer install --no-dev
#######################################
# MaRDI wikibase
# Build from official mediawiki image
#######################################
FROM mediawiki:${MEDIAWIKI_VERSION}
ARG WIKIBASE_VERSION=unknown
ARG WIKIBASE_COMMIT=unknown
ARG WIKIBASE_BUILT_AT=unknown
# Site/runtime defaults and deployment metadata
ENV MW_SITE_NAME=wikibase-docker \
MW_SITE_LANG=en \
PHP_FPM_PM=dynamic \
PHP_FPM_MAX_CHILDREN=75 \
PHP_FPM_START_SERVERS=25 \
PHP_FPM_MIN_SPARE_SERVERS=10 \
PHP_FPM_MAX_SPARE_SERVERS=40 \
PHP_FPM_MAX_REQUESTS=1000 \
PHP_FPM_REQUEST_TIMEOUT=60s \
OPCACHE_MEMORY_CONSUMPTION=512 \
OPCACHE_MAX_ACCELERATED_FILES=50000 \
OPCACHE_INTERNED_STRINGS_BUFFER=32 \
OPCACHE_VALIDATE_TIMESTAMPS=0 \
OPCACHE_REVALIDATE_FREQ=0 \
OPCACHE_JIT_BUFFER_SIZE=128M \
WIKIBASE_VERSION=$WIKIBASE_VERSION \
WIKIBASE_COMMIT=$WIKIBASE_COMMIT \
WIKIBASE_BUILT_AT=$WIKIBASE_BUILT_AT \
TZ=Europe/Berlin
LABEL org.opencontainers.image.title="MaRDI wikibase Container" \
org.opencontainers.image.description="Mediawiki/Wikibase image for the MaRDI portal" \
org.opencontainers.image.source="https://github.com/MaRDI4NFDI/docker-wikibase" \
org.opencontainers.image.documentation="https://github.com/MaRDI4NFDI/docker-wikibase" \
org.opencontainers.image.vendor="MaRDI4NFDI"
WORKDIR /var/www/html/w/
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive \
apt-get install --yes --no-install-recommends \
nano jq=1.* libbz2-dev=1.* gettext-base cron vim librsvg2-bin libpq-dev libyaml-dev \
lua5.1 liblua5.1-0-dev && \
apt-get clean && rm -rf /var/lib/apt/lists/*
RUN install -d /var/log/mediawiki -o www-data && \
pecl install yaml && \
docker-php-ext-enable yaml && \
docker-php-ext-install calendar bz2 pdo pgsql pdo_pgsql
RUN rm -rf /var/www/html/*
COPY --from=build /var/www/html /var/www/html/w
# Temporarily patch EventBus
RUN php -r " \
\$f = '/var/www/html/w/extensions/EventBus/includes/Rest/EventBodyValidator.php'; \
\$code = file_get_contents(\$f); \
\$code = str_replace( \
\"unset( \\\$event['mediawiki_signature'] );\", \
\"unset( \\\$event['mediawiki_signature'] );\\n\\t\\tunset( \\\$event['meta']['dt'] );\", \
\$code \
); \
file_put_contents(\$f, \$code); \
"
COPY wait-for-it.sh entrypoint.sh extra-install.sh /
COPY LocalSettings.php.template /
COPY oauth.ini /templates/oauth.ini
COPY images /var/www/html/w/images_repo/
COPY ./LocalSettings.d /var/www/html/w/LocalSettings.d
COPY regular_maintenance.sh /var/www/html/regular_maintenance.sh
COPY mardi_php.ini /usr/local/etc/php/conf.d/mardi_php.ini
COPY ./php-fpm/logging.conf /usr/local/etc/php-fpm.d/zz-logging.conf
COPY ./php-fpm/performance.conf.template ./php-fpm/opcache.conf.template /templates/
RUN chmod +x /wait-for-it.sh && \
chmod ugo+rwx /var/www/html/regular_maintenance.sh && \
echo "* */1 * * * root /var/www/html/regular_maintenance.sh > /var/www/html/regular_maintenance.log" >> /etc/cron.d/Regular_maintenance && \
mkdir /shared && \
chown www-data:www-data /var/www/html/w/images && \
chmod 777 /var/www/html/w/cache
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && \
echo "$TZ" > /etc/timezone && \
printf '[PHP]\ndate.timezone = "%s"\n' "$TZ" > /usr/local/etc/php/conf.d/tzone.ini
# HEALTHCHECK --interval=30s --timeout=10s --start-period=30s --retries=3 CMD php /var/www/html/w/maintenance/run.php getConfiguration --format json --settings wgServer
HEALTHCHECK --interval=30s --timeout=10s --start-period=30s --retries=3 CMD php /var/www/html/w/maintenance/run.php view Main_Page
ENTRYPOINT ["/bin/bash"]
CMD ["/entrypoint.sh"]