|
| 1 | +FROM php:7.1-fpm-alpine |
| 2 | + |
| 3 | +# entrypoint.sh and cron.sh dependencies |
| 4 | +RUN set -ex; \ |
| 5 | + \ |
| 6 | + apk add --no-cache \ |
| 7 | + bash \ |
| 8 | + coreutils \ |
| 9 | + rsync \ |
| 10 | + ; \ |
| 11 | + \ |
| 12 | + rm /var/spool/cron/crontabs/root; \ |
| 13 | + echo '*/15 * * * * php -f /var/www/html/cron.php' > /var/spool/cron/crontabs/www-data |
| 14 | + |
| 15 | +# install the PHP extensions we need |
| 16 | +# see https://docs.nextcloud.com/server/12/admin_manual/installation/source_installation.html |
| 17 | +RUN set -ex; \ |
| 18 | + \ |
| 19 | + apk add --no-cache --virtual .build-deps \ |
| 20 | + alpine-sdk \ |
| 21 | + autoconf \ |
| 22 | + freetype-dev \ |
| 23 | + icu-dev \ |
| 24 | + libjpeg-turbo-dev \ |
| 25 | + libmcrypt-dev \ |
| 26 | + libpng-dev \ |
| 27 | + libmemcached-dev \ |
| 28 | + libxml2-dev \ |
| 29 | + openldap-dev \ |
| 30 | + pcre-dev \ |
| 31 | + postgresql-dev \ |
| 32 | + ; \ |
| 33 | + \ |
| 34 | + docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr; \ |
| 35 | + docker-php-ext-configure ldap; \ |
| 36 | + docker-php-ext-install \ |
| 37 | + exif \ |
| 38 | + gd \ |
| 39 | + intl \ |
| 40 | + ldap \ |
| 41 | + mbstring \ |
| 42 | + mcrypt \ |
| 43 | + mysqli \ |
| 44 | + opcache \ |
| 45 | + pcntl \ |
| 46 | + pdo_mysql \ |
| 47 | + pdo_pgsql \ |
| 48 | + pgsql \ |
| 49 | + zip \ |
| 50 | + ; \ |
| 51 | + pecl install \ |
| 52 | + APCu-5.1.10 \ |
| 53 | + memcached-3.0.4 \ |
| 54 | + redis-3.1.6 \ |
| 55 | + ; \ |
| 56 | + docker-php-ext-enable \ |
| 57 | + apcu \ |
| 58 | + memcached \ |
| 59 | + redis \ |
| 60 | + ; \ |
| 61 | + \ |
| 62 | + runDeps="$( \ |
| 63 | + scanelf --needed --nobanner --format '%n#p' --recursive /usr/local/lib/php/extensions \ |
| 64 | + | tr ',' '\n' \ |
| 65 | + | sort -u \ |
| 66 | + | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \ |
| 67 | + )"; \ |
| 68 | + apk add --virtual .nextcloud-phpext-rundeps $runDeps; \ |
| 69 | + apk del .build-deps |
| 70 | + |
| 71 | +# set recommended PHP.ini settings |
| 72 | +# see https://docs.nextcloud.com/server/12/admin_manual/configuration_server/server_tuning.html#enable-php-opcache |
| 73 | +RUN { \ |
| 74 | + echo 'opcache.enable=1'; \ |
| 75 | + echo 'opcache.enable_cli=1'; \ |
| 76 | + echo 'opcache.interned_strings_buffer=8'; \ |
| 77 | + echo 'opcache.max_accelerated_files=10000'; \ |
| 78 | + echo 'opcache.memory_consumption=128'; \ |
| 79 | + echo 'opcache.save_comments=1'; \ |
| 80 | + echo 'opcache.revalidate_freq=1'; \ |
| 81 | + } > /usr/local/etc/php/conf.d/opcache-recommended.ini; \ |
| 82 | + \ |
| 83 | + chown -R www-data:root /var/www/html; \ |
| 84 | + chmod -R g=u /var/www/html |
| 85 | + |
| 86 | +VOLUME /var/www/html |
| 87 | + |
| 88 | + |
| 89 | +ENV NEXTCLOUD_VERSION 11.0.7 |
| 90 | + |
| 91 | +RUN set -ex; \ |
| 92 | + apk add --no-cache --virtual .fetch-deps \ |
| 93 | + bzip2 \ |
| 94 | + gnupg \ |
| 95 | + ; \ |
| 96 | + \ |
| 97 | + curl -fsSL -o nextcloud.tar.bz2 \ |
| 98 | + "https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2"; \ |
| 99 | + curl -fsSL -o nextcloud.tar.bz2.asc \ |
| 100 | + "https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2.asc"; \ |
| 101 | + export GNUPGHOME="$(mktemp -d)"; \ |
| 102 | +# gpg key from https://nextcloud.com/nextcloud.asc |
| 103 | + gpg --keyserver ha.pool.sks-keyservers.net --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \ |
| 104 | + gpg --batch --verify nextcloud.tar.bz2.asc nextcloud.tar.bz2; \ |
| 105 | + rm -r "$GNUPGHOME" nextcloud.tar.bz2.asc; \ |
| 106 | + tar -xjf nextcloud.tar.bz2 -C /usr/src/; \ |
| 107 | + rm nextcloud.tar.bz2; \ |
| 108 | + rm -rf /usr/src/nextcloud/updater; \ |
| 109 | + mkdir -p /usr/src/nextcloud/data; \ |
| 110 | + mkdir -p /usr/src/nextcloud/custom_apps; \ |
| 111 | + chmod +x /usr/src/nextcloud/occ; \ |
| 112 | + apk del .fetch-deps |
| 113 | + |
| 114 | +COPY *.sh / |
| 115 | +COPY config/* /usr/src/nextcloud/config/ |
| 116 | + |
| 117 | +ENTRYPOINT ["/entrypoint.sh"] |
| 118 | +CMD ["php-fpm"] |
0 commit comments