author | ymh <ymh.work@gmail.com> |
Fri, 06 Dec 2019 00:53:26 +0100 | |
changeset 4 | 16535597bd14 |
parent 0 | 505fe5249d9c |
permissions | -rw-r--r-- |
0
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
1 |
FROM php:7.3-fpm-alpine |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
2 |
|
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
3 |
# docker-entrypoint.sh dependencies |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
4 |
RUN apk add --no-cache \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
5 |
# in theory, docker-entrypoint.sh is POSIX-compliant, but priority is a working, consistent image |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
6 |
bash \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
7 |
# BusyBox sed is not sufficient for some of our sed expressions |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
8 |
sed \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
9 |
less \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
10 |
mysql-client ; \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
11 |
apk add --no-cache --virtual .composer-rundeps git subversion openssh mercurial tini patch make zip unzip coreutils; |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
12 |
|
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
13 |
|
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
14 |
RUN set -ex; \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
15 |
\ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
16 |
# install the PHP extensions we need |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
17 |
apk add --no-cache --virtual .build-deps \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
18 |
libjpeg-turbo-dev \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
19 |
libpng-dev \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
20 |
libzip-dev \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
21 |
zlib-dev; \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
22 |
docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
23 |
docker-php-ext-configure zip --with-libzip; \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
24 |
docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gd mysqli opcache zip; \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
25 |
runDeps="$( \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
26 |
scanelf --needed --nobanner --format '%n#p' --recursive /usr/local/lib/php/extensions \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
27 |
| tr ',' '\n' \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
28 |
| sort -u \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
29 |
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
30 |
)"; \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
31 |
apk add --virtual .wordpress-phpexts-rundeps $runDeps; \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
32 |
# install composer dependencies |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
33 |
apk add --no-cache --virtual .composer-phpext-rundeps $runDeps; \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
34 |
printf "# composer php cli ini settings\n\ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
35 |
date.timezone=UTC\n\ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
36 |
memory_limit=-1\n\ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
37 |
opcache.enable_cli=1\n\ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
38 |
" > $PHP_INI_DIR/php-cli.ini ; \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
39 |
# clean |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
40 |
apk del .build-deps |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
41 |
|
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
42 |
# install composer |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
43 |
ENV COMPOSER_ALLOW_SUPERUSER 1 |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
44 |
ENV COMPOSER_HOME /tmp |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
45 |
ENV COMPOSER_VERSION 1.8.5 |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
46 |
|
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
47 |
RUN curl --silent --fail --location --retry 3 --output /tmp/installer.php --url https://raw.githubusercontent.com/composer/getcomposer.org/cb19f2aa3aeaa2006c0cd69a7ef011eb31463067/web/installer \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
48 |
&& php -r " \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
49 |
\$signature = '48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a5cbe587c3f0fe57a54d8f5'; \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
50 |
\$hash = hash('sha384', file_get_contents('/tmp/installer.php')); \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
51 |
if (!hash_equals(\$signature, \$hash)) { \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
52 |
unlink('/tmp/installer.php'); \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
53 |
echo 'Integrity check failed, installer is either corrupt or worse.' . PHP_EOL; \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
54 |
exit(1); \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
55 |
}" \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
56 |
&& php /tmp/installer.php --no-ansi --install-dir=/usr/bin --filename=composer --version=${COMPOSER_VERSION} \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
57 |
&& composer --ansi --version --no-interaction \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
58 |
# install prestissimo composer parallel install plugin. |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
59 |
&& composer --no-interaction global require --no-progress hirak/prestissimo \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
60 |
&& rm -f /tmp/installer.php |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
61 |
|
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
62 |
|
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
63 |
|
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
64 |
# set recommended PHP.ini settings |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
65 |
# see https://secure.php.net/manual/en/opcache.installation.php |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
66 |
RUN { \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
67 |
echo 'opcache.memory_consumption=128'; \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
68 |
echo 'opcache.interned_strings_buffer=8'; \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
69 |
echo 'opcache.max_accelerated_files=4000'; \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
70 |
echo 'opcache.revalidate_freq=2'; \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
71 |
echo 'opcache.fast_shutdown=1'; \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
72 |
echo 'opcache.enable_cli=1'; \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
73 |
} > /usr/local/etc/php/conf.d/opcache-recommended.ini |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
74 |
# https://codex.wordpress.org/Editing_wp-config.php#Configure_Error_Logging |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
75 |
RUN { \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
76 |
echo 'error_reporting = 4339'; \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
77 |
echo 'display_errors = Off'; \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
78 |
echo 'display_startup_errors = Off'; \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
79 |
echo 'log_errors = On'; \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
80 |
echo 'error_log = /dev/stderr'; \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
81 |
echo 'log_errors_max_len = 1024'; \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
82 |
echo 'ignore_repeated_errors = On'; \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
83 |
echo 'ignore_repeated_source = Off'; \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
84 |
echo 'html_errors = Off'; \ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
85 |
} > /usr/local/etc/php/conf.d/error-logging.ini |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
86 |
|
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
87 |
VOLUME /var/www/html |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
88 |
|
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
89 |
COPY ./docker-entrypoint.sh /usr/local/bin/ |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
90 |
RUN chmod +x /usr/local/bin/docker-entrypoint.sh |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
91 |
|
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
92 |
ENTRYPOINT ["docker-entrypoint.sh"] |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
93 |
CMD ["php-fpm"] |
505fe5249d9c
add foundations for pharmakon (bedrock + deploy)
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
94 |