forked from alistair3149/sct-docker
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile
165 lines (148 loc) · 5.08 KB
/
Dockerfile
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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
FROM php:7.4-fpm
# Version
ENV MEDIAWIKI_MAJOR_VERSION 1.35
ENV MEDIAWIKI_VERSION 1.35.8
# System dependencies
RUN set -eux; \
\
apt-get update; \
apt-get install -y --no-install-recommends \
git \
librsvg2-bin \
imagemagick \
ffmpeg \
webp \
unzip \
openssh-client \
# Required for SyntaxHighlighting
python3 \
python3-pygments \
rsync \
nano \
; \
rm -rf /var/lib/apt/lists/*
# Install the PHP extensions we need
RUN set -eux; \
\
savedAptMark="$(apt-mark showmanual)"; \
\
apt-get update; \
apt-get install -y --no-install-recommends \
libicu-dev \
libonig-dev \
libcurl4-gnutls-dev \
libmagickwand-dev \
libwebp6 \
libzip-dev \
liblua5.1-0-dev \
; \
\
docker-php-ext-install -j "$(nproc)" \
calendar \
intl \
mbstring \
mysqli \
opcache \
; \
\
pecl install \
APCu-5.1.21 \
luasandbox \
imagick \
redis \
; \
docker-php-ext-enable \
apcu \
luasandbox \
imagick \
redis \
; \
rm -r /tmp/pear; \
\
# reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies
apt-mark auto '.*' > /dev/null; \
apt-mark manual $savedAptMark; \
ldd "$(php -r 'echo ini_get("extension_dir");')"/*.so \
| awk '/=>/ { print $3 }' \
| sort -u \
| xargs -r dpkg-query -S \
| cut -d: -f1 \
| sort -u \
| xargs -rt apt-mark manual; \
\
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
rm -rf /var/lib/apt/lists/*
# set recommended PHP.ini settings
# see https://secure.php.net/manual/en/opcache.installation.php
RUN { \
echo 'opcache.memory_consumption=128'; \
echo 'opcache.interned_strings_buffer=8'; \
echo 'opcache.max_accelerated_files=4000'; \
echo 'opcache.revalidate_freq=60'; \
} > /usr/local/etc/php/conf.d/opcache-recommended.ini
# MediaWiki setup
RUN set -eux; \
fetchDeps=" \
gnupg \
dirmngr \
"; \
apt-get update; \
apt-get install -y --no-install-recommends $fetchDeps; \
\
curl -fSL "https://releases.wikimedia.org/mediawiki/${MEDIAWIKI_MAJOR_VERSION}/mediawiki-${MEDIAWIKI_VERSION}.tar.gz" -o mediawiki.tar.gz; \
curl -fSL "https://releases.wikimedia.org/mediawiki/${MEDIAWIKI_MAJOR_VERSION}/mediawiki-${MEDIAWIKI_VERSION}.tar.gz.sig" -o mediawiki.tar.gz.sig; \
export GNUPGHOME="$(mktemp -d)"; \
# gpg key from https://www.mediawiki.org/keys/keys.txt
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys \
D7D6767D135A514BEB86E9BA75682B08E8A3FEC4 \
441276E9CCD15F44F6D97D18C119E1A64D70938E \
F7F780D82EBFB8A56556E7EE82403E59F9F8CD79 \
1D98867E82982C8FE0ABC25F9B69B3109D3BB7B0 \
; \
gpg --batch --verify mediawiki.tar.gz.sig mediawiki.tar.gz; \
mkdir /var/www/provisioning; \
mkdir /var/www/mediawiki; \
tar -x --strip-components=1 -f mediawiki.tar.gz -C /var/www/provisioning; \
gpgconf --kill all; \
rm -r "$GNUPGHOME" mediawiki.tar.gz.sig mediawiki.tar.gz; \
\
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps; \
rm -rf /var/lib/apt/lists/*
COPY ./config/LocalSettings.php /var/www/provisioning/LocalSettings.php
COPY ./resources /var/www/provisioning/resources
COPY ./config/php-config.ini /usr/local/etc/php/conf.d/php-config.ini
COPY ./config/robots.txt /var/www/provisioning/robots.txt
COPY ./resources/assets/favicon.ico /var/www/provisioning/favicon.ico
RUN echo 'memory_limit = 512M' >> /usr/local/etc/php/conf.d/docker-php-memlimit.ini; \
echo 'max_execution_time = 60' >> /usr/local/etc/php/conf.d/docker-php-executiontime.ini;
COPY --from=composer /usr/bin/composer /usr/bin/composer
COPY composer.local.json /var/www/provisioning
RUN set -eux; \
chown -R www-data:www-data /var/www
WORKDIR /var/www/provisioning
USER www-data
RUN set -eux; \
/usr/bin/composer config --no-plugins allow-plugins.composer/installers true; \
/usr/bin/composer install --no-dev \
--ignore-platform-reqs \
--no-ansi \
--no-interaction \
--no-scripts; \
rm -f composer.lock.json ;\
/usr/bin/composer update --no-dev \
--no-ansi \
--no-interaction \
--no-scripts; \
\
mv /var/www/provisioning/extensions/Checkuser /var/www/provisioning/extensions/CheckUser; \
mv /var/www/provisioning/extensions/Dismissablesitenotice /var/www/provisioning/extensions/DismissableSiteNotice; \
mv /var/www/provisioning/extensions/Externaldata /var/www/provisioning/extensions/ExternalData; \
mv /var/www/provisioning/extensions/Nativesvghandler /var/www/provisioning/extensions/NativeSvgHandler; \
mv /var/www/provisioning/extensions/Revisionslider /var/www/provisioning/extensions/RevisionSlider; \
mv /var/www/provisioning/extensions/Rss /var/www/provisioning/extensions/RSS; \
mv /var/www/provisioning/extensions/Shortdescription /var/www/provisioning/extensions/ShortDescription; \
mv /var/www/provisioning/extensions/WikiSeo /var/www/provisioning/extensions/WikiSEO; \
mv /var/www/provisioning/skins/citizen /var/www/provisioning/skins/Citizen; \
chown -R www-data:www-data /var/www
WORKDIR /var/www/mediawiki
CMD ["php-fpm"]