From dbb9e8fd830f2094e3b8182cd6ddd41f4977c40e Mon Sep 17 00:00:00 2001 From: Alexis Saettler Date: Sat, 29 Feb 2020 16:01:46 +0100 Subject: [PATCH] Install sentry only on x86_64 images (#3) --- Dockerfile-alpine.template | 120 +++++++++++++++++++------------------ Dockerfile-debian.template | 96 +++++++++++++++-------------- apache/Dockerfile | 96 +++++++++++++++-------------- fpm-alpine/Dockerfile | 120 +++++++++++++++++++------------------ fpm/Dockerfile | 96 +++++++++++++++-------------- 5 files changed, 279 insertions(+), 249 deletions(-) diff --git a/Dockerfile-alpine.template b/Dockerfile-alpine.template index db9cdc1..9b89236 100644 --- a/Dockerfile-alpine.template +++ b/Dockerfile-alpine.template @@ -5,40 +5,40 @@ FROM php:%%PHP_VERSION%%-%%VARIANT%% # entrypoint.sh dependencies RUN set -ex; \ \ - apk add --no-cache \ - bash \ - coreutils \ - rsync \ - ; \ + apk add --no-cache \ + bash \ + coreutils \ + rsync \ + ; \ rm -rf /var/cache/apk/* # Install required PHP extensions RUN set -ex; \ - \ - apk add --no-cache --virtual .build-deps \ - $PHPIZE_DEPS \ + \ + apk add --no-cache --virtual .build-deps \ + $PHPIZE_DEPS \ icu-dev \ zlib-dev \ libzip-dev \ - libxml2-dev \ + libxml2-dev \ freetype-dev \ - libpng-dev \ + libpng-dev \ libjpeg-turbo-dev \ jpeg-dev \ gmp-dev \ - libsodium-dev \ + libsodium-dev \ libmemcached-dev \ - ; \ - \ - docker-php-ext-configure intl; \ - docker-php-ext-configure gd \ - --with-gd \ - --with-freetype-dir=/usr/include/ \ - --with-jpeg-dir=/usr/include/ \ - --with-png-dir=/usr/include/ \ - ; \ - docker-php-ext-configure gmp; \ - docker-php-ext-install -j "$(nproc)" \ + ; \ + \ + docker-php-ext-configure intl; \ + docker-php-ext-configure gd \ + --with-gd \ + --with-freetype-dir=/usr/include/ \ + --with-jpeg-dir=/usr/include/ \ + --with-png-dir=/usr/include/ \ + ; \ + docker-php-ext-configure gmp; \ + docker-php-ext-install -j "$(nproc)" \ intl \ zip \ json \ @@ -52,32 +52,32 @@ RUN set -ex; \ sodium \ mbstring \ opcache \ - ; \ + ; \ # pecl will claim success even if one install fails, so we need to perform each install separately - pecl install APCu-%%APCU_VERSION%%; \ - pecl install memcached-%%MEMCACHED_VERSION%%; \ - pecl install redis-%%REDIS_VERSION%%; \ - \ - docker-php-ext-enable \ - apcu \ - memcached \ - redis \ - ; \ - \ - runDeps="$( \ - scanelf --needed --nobanner --format '%n#p' --recursive /usr/local/lib/php/extensions \ - | tr ',' '\n' \ - | sort -u \ - | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \ - )"; \ - apk add --virtual .monica-phpext-rundeps $runDeps; \ - apk del .build-deps; \ + pecl install APCu-%%APCU_VERSION%%; \ + pecl install memcached-%%MEMCACHED_VERSION%%; \ + pecl install redis-%%REDIS_VERSION%%; \ + \ + docker-php-ext-enable \ + apcu \ + memcached \ + redis \ + ; \ + \ + runDeps="$( \ + scanelf --needed --nobanner --format '%n#p' --recursive /usr/local/lib/php/extensions \ + | tr ',' '\n' \ + | sort -u \ + | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \ + )"; \ + apk add --virtual .monica-phpext-rundeps $runDeps; \ + apk del .build-deps; \ rm -rf /var/cache/apk/* # Set crontab for schedules RUN set -ex; \ - \ - rm /var/spool/cron/crontabs/root; \ + \ + rm /var/spool/cron/crontabs/root; \ echo '*/5 * * * * php /var/www/html/artisan schedule:run -v > /proc/1/fd/1 2> /proc/1/fd/2' > /var/spool/cron/crontabs/www-data # Opcache @@ -86,7 +86,7 @@ ENV PHP_OPCACHE_VALIDATE_TIMESTAMPS="0" \ PHP_OPCACHE_MEMORY_CONSUMPTION="192" \ PHP_OPCACHE_MAX_WASTED_PERCENTAGE="10" RUN { \ - echo '[opcache]'; \ + echo '[opcache]'; \ echo 'opcache.enable=1'; \ echo 'opcache.revalidate_freq=0'; \ echo "opcache.validate_timestamps=${PHP_OPCACHE_VALIDATE_TIMESTAMPS}"; \ @@ -95,38 +95,44 @@ RUN { \ echo "opcache.max_wasted_percentage=${PHP_OPCACHE_MAX_WASTED_PERCENTAGE}"; \ echo 'opcache.interned_strings_buffer=16'; \ echo 'opcache.fast_shutdown=1'; \ - } > /usr/local/etc/php/conf.d/opcache-recommended.ini; \ + } > $PHP_INI_DIR/conf.d/opcache-recommended.ini; \ \ - echo 'apc.enable_cli=1' >> /usr/local/etc/php/conf.d/docker-php-ext-apcu.ini; \ + echo 'apc.enable_cli=1' >> $PHP_INI_DIR/conf.d/docker-php-ext-apcu.ini; \ \ - echo 'memory_limit=512M' > /usr/local/etc/php/conf.d/memory-limit.ini + echo 'memory_limit=512M' > $PHP_INI_DIR/conf.d/memory-limit.ini # Sentry -RUN mkdir -p /root/.local/bin; \ - curl -sL https://sentry.io/get-cli/ | INSTALL_DIR=/root/.local/bin bash +RUN if [ $(uname -m) = "x86_64" ]; then \ + PLATFORM=$(uname -s); \ + if [ "$PLATFORM" = "Linux" -o "$PLATFORM" = "Windows" -o "$PLATFORM" = "Darwin" ]; then \ + mkdir -p /root/.local/bin; \ + curl -sL https://sentry.io/get-cli/ | INSTALL_DIR=/root/.local/bin bash; \ + fi \ + fi VOLUME /var/www/html # Define Monica version and expected SHA512 signature ENV MONICA_VERSION %%VERSION%% ENV MONICA_SHA512 %%SHA512%% +ENV MONICA_SRC /usr/src/monica RUN set -ex; \ apk add --no-cache --virtual .fetch-deps \ bzip2 \ ; \ \ - curl -fsSL -o monica.tar.bz2 "https://github.com/monicahq/monica/releases/download/${MONICA_VERSION}/monica-${MONICA_VERSION}.tar.bz2"; \ - echo "$MONICA_SHA512 *monica.tar.bz2" | sha512sum -c -; \ + curl -fsSL -o monica.tar.bz2 "https://github.com/monicahq/monica/releases/download/${MONICA_VERSION}/monica-${MONICA_VERSION}.tar.bz2"; \ + echo "$MONICA_SHA512 *monica.tar.bz2" | sha512sum -c -; \ \ - mkdir /usr/src/monica; \ - tar -xf monica.tar.bz2 -C /usr/src/monica --strip-components=1; \ - rm monica.tar.bz2; \ + mkdir $MONICA_SRC; \ + tar -xf monica.tar.bz2 -C $MONICA_SRC --strip-components=1; \ + rm monica.tar.bz2; \ \ - cp /usr/src/monica/.env.example /usr/src/monica/.env; \ - chown -R www-data:www-data /usr/src/monica; \ + cp $MONICA_SRC/.env.example $MONICA_SRC/.env; \ + chown -R www-data:www-data $MONICA_SRC; \ \ - apk del .fetch-deps; \ + apk del .fetch-deps; \ rm -rf /var/cache/apk/* COPY upgrade.exclude \ diff --git a/Dockerfile-debian.template b/Dockerfile-debian.template index 0c7bc0d..632487b 100644 --- a/Dockerfile-debian.template +++ b/Dockerfile-debian.template @@ -16,11 +16,11 @@ RUN set -ex; \ # Install required PHP extensions RUN set -ex; \ - \ - savedAptMark="$(apt-mark showmanual)"; \ - \ - apt-get update; \ - apt-get install -y --no-install-recommends \ + \ + savedAptMark="$(apt-mark showmanual)"; \ + \ + apt-get update; \ + apt-get install -y --no-install-recommends \ libicu-dev \ zlib1g-dev \ libzip-dev \ @@ -31,13 +31,13 @@ RUN set -ex; \ libgmp-dev \ libsodium-dev \ libmemcached-dev \ - ; \ - \ - debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \ - if [ ! -e /usr/include/gmp.h ]; then ln -s /usr/include/$debMultiarch/gmp.h /usr/include/gmp.h; fi;\ + ; \ + \ + debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \ + if [ ! -e /usr/include/gmp.h ]; then ln -s /usr/include/$debMultiarch/gmp.h /usr/include/gmp.h; fi;\ docker-php-ext-configure intl; \ docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/; \ - docker-php-ext-configure gmp --with-gmp="/usr/include/$debMultiarch"; \ + docker-php-ext-configure gmp --with-gmp="/usr/include/$debMultiarch"; \ docker-php-ext-install -j$(nproc) \ intl \ zip \ @@ -52,12 +52,12 @@ RUN set -ex; \ sodium \ mbstring \ opcache \ - ; \ - \ + ; \ + \ # pecl will claim success even if one install fails, so we need to perform each install separately - pecl install APCu-%%APCU_VERSION%%; \ - pecl install memcached-%%MEMCACHED_VERSION%%; \ - pecl install redis-%%REDIS_VERSION%%; \ + pecl install APCu-%%APCU_VERSION%%; \ + pecl install memcached-%%MEMCACHED_VERSION%%; \ + pecl install redis-%%REDIS_VERSION%%; \ \ docker-php-ext-enable \ apcu \ @@ -66,27 +66,27 @@ RUN set -ex; \ ; \ \ # 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; \ + 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/*; \ - \ - if command -v a2enmod; then \ - a2enmod rewrite; \ - fi + \ + if command -v a2enmod; then \ + a2enmod rewrite; \ + fi # Set crontab for schedules RUN set -ex; \ - \ - mkdir -p /var/spool/cron/crontabs; \ + \ + mkdir -p /var/spool/cron/crontabs; \ echo '*/5 * * * * php /var/www/html/artisan schedule:run -v > /proc/1/fd/1 2> /proc/1/fd/2' > /var/spool/cron/crontabs/www-data # Opcache @@ -95,7 +95,7 @@ ENV PHP_OPCACHE_VALIDATE_TIMESTAMPS="0" \ PHP_OPCACHE_MEMORY_CONSUMPTION="192" \ PHP_OPCACHE_MAX_WASTED_PERCENTAGE="10" RUN { \ - echo '[opcache]'; \ + echo '[opcache]'; \ echo 'opcache.enable=1'; \ echo 'opcache.revalidate_freq=0'; \ echo "opcache.validate_timestamps=${PHP_OPCACHE_VALIDATE_TIMESTAMPS}"; \ @@ -104,34 +104,40 @@ RUN { \ echo "opcache.max_wasted_percentage=${PHP_OPCACHE_MAX_WASTED_PERCENTAGE}"; \ echo 'opcache.interned_strings_buffer=16'; \ echo 'opcache.fast_shutdown=1'; \ - } > /usr/local/etc/php/conf.d/opcache-recommended.ini; \ + } > $PHP_INI_DIR/conf.d/opcache-recommended.ini; \ \ - echo 'apc.enable_cli=1' >> /usr/local/etc/php/conf.d/docker-php-ext-apcu.ini; \ + echo 'apc.enable_cli=1' >> $PHP_INI_DIR/conf.d/docker-php-ext-apcu.ini; \ \ - echo 'memory_limit=512M' > /usr/local/etc/php/conf.d/memory-limit.ini + echo 'memory_limit=512M' > $PHP_INI_DIR/conf.d/memory-limit.ini # Sentry -RUN mkdir -p /root/.local/bin; \ - curl -sL https://sentry.io/get-cli/ | INSTALL_DIR=/root/.local/bin bash +RUN if [ $(uname -m) = "x86_64" ]; then \ + PLATFORM=$(uname -s); \ + if [ "$PLATFORM" = "Linux" -o "$PLATFORM" = "Windows" -o "$PLATFORM" = "Darwin" ]; then \ + mkdir -p /root/.local/bin; \ + curl -sL https://sentry.io/get-cli/ | INSTALL_DIR=/root/.local/bin bash; \ + fi \ + fi VOLUME /var/www/html # Define Monica version and expected SHA512 signature ENV MONICA_VERSION %%VERSION%% ENV MONICA_SHA512 %%SHA512%% +ENV MONICA_SRC /usr/src/monica %%APACHE_DOCUMENT%% RUN set -eu; \ - curl -fsSL -o monica.tar.bz2 "https://github.com/monicahq/monica/releases/download/${MONICA_VERSION}/monica-${MONICA_VERSION}.tar.bz2"; \ - echo "$MONICA_SHA512 *monica.tar.bz2" | sha512sum -c -; \ + curl -fsSL -o monica.tar.bz2 "https://github.com/monicahq/monica/releases/download/${MONICA_VERSION}/monica-${MONICA_VERSION}.tar.bz2"; \ + echo "$MONICA_SHA512 *monica.tar.bz2" | sha512sum -c -; \ \ - mkdir /usr/src/monica; \ - tar -xf monica.tar.bz2 -C /usr/src/monica --strip-components=1; \ - rm monica.tar.bz2; \ + mkdir $MONICA_SRC; \ + tar -xf monica.tar.bz2 -C $MONICA_SRC --strip-components=1; \ + rm monica.tar.bz2; \ \ - cp /usr/src/monica/.env.example /usr/src/monica/.env; \ - chown -R www-data:www-data /usr/src/monica + cp $MONICA_SRC/.env.example $MONICA_SRC/.env; \ + chown -R www-data:www-data $MONICA_SRC COPY upgrade.exclude \ /usr/local/share/ diff --git a/apache/Dockerfile b/apache/Dockerfile index 98da637..21071fc 100644 --- a/apache/Dockerfile +++ b/apache/Dockerfile @@ -22,11 +22,11 @@ RUN set -ex; \ # Install required PHP extensions RUN set -ex; \ - \ - savedAptMark="$(apt-mark showmanual)"; \ - \ - apt-get update; \ - apt-get install -y --no-install-recommends \ + \ + savedAptMark="$(apt-mark showmanual)"; \ + \ + apt-get update; \ + apt-get install -y --no-install-recommends \ libicu-dev \ zlib1g-dev \ libzip-dev \ @@ -37,13 +37,13 @@ RUN set -ex; \ libgmp-dev \ libsodium-dev \ libmemcached-dev \ - ; \ - \ - debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \ - if [ ! -e /usr/include/gmp.h ]; then ln -s /usr/include/$debMultiarch/gmp.h /usr/include/gmp.h; fi;\ + ; \ + \ + debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \ + if [ ! -e /usr/include/gmp.h ]; then ln -s /usr/include/$debMultiarch/gmp.h /usr/include/gmp.h; fi;\ docker-php-ext-configure intl; \ docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/; \ - docker-php-ext-configure gmp --with-gmp="/usr/include/$debMultiarch"; \ + docker-php-ext-configure gmp --with-gmp="/usr/include/$debMultiarch"; \ docker-php-ext-install -j$(nproc) \ intl \ zip \ @@ -58,12 +58,12 @@ RUN set -ex; \ sodium \ mbstring \ opcache \ - ; \ - \ + ; \ + \ # pecl will claim success even if one install fails, so we need to perform each install separately - pecl install APCu-5.1.18; \ - pecl install memcached-3.1.5; \ - pecl install redis-5.1.1; \ + pecl install APCu-5.1.18; \ + pecl install memcached-3.1.5; \ + pecl install redis-5.1.1; \ \ docker-php-ext-enable \ apcu \ @@ -72,27 +72,27 @@ RUN set -ex; \ ; \ \ # 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; \ + 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/*; \ - \ - if command -v a2enmod; then \ - a2enmod rewrite; \ - fi + \ + if command -v a2enmod; then \ + a2enmod rewrite; \ + fi # Set crontab for schedules RUN set -ex; \ - \ - mkdir -p /var/spool/cron/crontabs; \ + \ + mkdir -p /var/spool/cron/crontabs; \ echo '*/5 * * * * php /var/www/html/artisan schedule:run -v > /proc/1/fd/1 2> /proc/1/fd/2' > /var/spool/cron/crontabs/www-data # Opcache @@ -101,7 +101,7 @@ ENV PHP_OPCACHE_VALIDATE_TIMESTAMPS="0" \ PHP_OPCACHE_MEMORY_CONSUMPTION="192" \ PHP_OPCACHE_MAX_WASTED_PERCENTAGE="10" RUN { \ - echo '[opcache]'; \ + echo '[opcache]'; \ echo 'opcache.enable=1'; \ echo 'opcache.revalidate_freq=0'; \ echo "opcache.validate_timestamps=${PHP_OPCACHE_VALIDATE_TIMESTAMPS}"; \ @@ -110,36 +110,42 @@ RUN { \ echo "opcache.max_wasted_percentage=${PHP_OPCACHE_MAX_WASTED_PERCENTAGE}"; \ echo 'opcache.interned_strings_buffer=16'; \ echo 'opcache.fast_shutdown=1'; \ - } > /usr/local/etc/php/conf.d/opcache-recommended.ini; \ + } > $PHP_INI_DIR/conf.d/opcache-recommended.ini; \ \ - echo 'apc.enable_cli=1' >> /usr/local/etc/php/conf.d/docker-php-ext-apcu.ini; \ + echo 'apc.enable_cli=1' >> $PHP_INI_DIR/conf.d/docker-php-ext-apcu.ini; \ \ - echo 'memory_limit=512M' > /usr/local/etc/php/conf.d/memory-limit.ini + echo 'memory_limit=512M' > $PHP_INI_DIR/conf.d/memory-limit.ini # Sentry -RUN mkdir -p /root/.local/bin; \ - curl -sL https://sentry.io/get-cli/ | INSTALL_DIR=/root/.local/bin bash +RUN if [ $(uname -m) = "x86_64" ]; then \ + PLATFORM=$(uname -s); \ + if [ "$PLATFORM" = "Linux" -o "$PLATFORM" = "Windows" -o "$PLATFORM" = "Darwin" ]; then \ + mkdir -p /root/.local/bin; \ + curl -sL https://sentry.io/get-cli/ | INSTALL_DIR=/root/.local/bin bash; \ + fi \ + fi VOLUME /var/www/html # Define Monica version and expected SHA512 signature ENV MONICA_VERSION v2.16.0 ENV MONICA_SHA512 f2d1a434b5615bcd100388066854dfd36c81f403e817f45a21d4c04ec9ee022339c25334913586a51e763928d17d8b3fa79b6bf1883cac6fffe1aabfbd14ae3c +ENV MONICA_SRC /usr/src/monica ENV APACHE_DOCUMENT_ROOT /var/www/html/public RUN set -eu; sed -ri -e "s!/var/www/html!${APACHE_DOCUMENT_ROOT}!g" /etc/apache2/sites-available/*.conf; \ sed -ri -e "s!/var/www/!${APACHE_DOCUMENT_ROOT}!g" /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf RUN set -eu; \ - curl -fsSL -o monica.tar.bz2 "https://github.com/monicahq/monica/releases/download/${MONICA_VERSION}/monica-${MONICA_VERSION}.tar.bz2"; \ - echo "$MONICA_SHA512 *monica.tar.bz2" | sha512sum -c -; \ + curl -fsSL -o monica.tar.bz2 "https://github.com/monicahq/monica/releases/download/${MONICA_VERSION}/monica-${MONICA_VERSION}.tar.bz2"; \ + echo "$MONICA_SHA512 *monica.tar.bz2" | sha512sum -c -; \ \ - mkdir /usr/src/monica; \ - tar -xf monica.tar.bz2 -C /usr/src/monica --strip-components=1; \ - rm monica.tar.bz2; \ + mkdir $MONICA_SRC; \ + tar -xf monica.tar.bz2 -C $MONICA_SRC --strip-components=1; \ + rm monica.tar.bz2; \ \ - cp /usr/src/monica/.env.example /usr/src/monica/.env; \ - chown -R www-data:www-data /usr/src/monica + cp $MONICA_SRC/.env.example $MONICA_SRC/.env; \ + chown -R www-data:www-data $MONICA_SRC COPY upgrade.exclude \ /usr/local/share/ diff --git a/fpm-alpine/Dockerfile b/fpm-alpine/Dockerfile index 3f58dea..4d6a885 100644 --- a/fpm-alpine/Dockerfile +++ b/fpm-alpine/Dockerfile @@ -11,40 +11,40 @@ LABEL maintainer="Alexis Saettler (@asbiin)" \ # entrypoint.sh dependencies RUN set -ex; \ \ - apk add --no-cache \ - bash \ - coreutils \ - rsync \ - ; \ + apk add --no-cache \ + bash \ + coreutils \ + rsync \ + ; \ rm -rf /var/cache/apk/* # Install required PHP extensions RUN set -ex; \ - \ - apk add --no-cache --virtual .build-deps \ - $PHPIZE_DEPS \ + \ + apk add --no-cache --virtual .build-deps \ + $PHPIZE_DEPS \ icu-dev \ zlib-dev \ libzip-dev \ - libxml2-dev \ + libxml2-dev \ freetype-dev \ - libpng-dev \ + libpng-dev \ libjpeg-turbo-dev \ jpeg-dev \ gmp-dev \ - libsodium-dev \ + libsodium-dev \ libmemcached-dev \ - ; \ - \ - docker-php-ext-configure intl; \ - docker-php-ext-configure gd \ - --with-gd \ - --with-freetype-dir=/usr/include/ \ - --with-jpeg-dir=/usr/include/ \ - --with-png-dir=/usr/include/ \ - ; \ - docker-php-ext-configure gmp; \ - docker-php-ext-install -j "$(nproc)" \ + ; \ + \ + docker-php-ext-configure intl; \ + docker-php-ext-configure gd \ + --with-gd \ + --with-freetype-dir=/usr/include/ \ + --with-jpeg-dir=/usr/include/ \ + --with-png-dir=/usr/include/ \ + ; \ + docker-php-ext-configure gmp; \ + docker-php-ext-install -j "$(nproc)" \ intl \ zip \ json \ @@ -58,32 +58,32 @@ RUN set -ex; \ sodium \ mbstring \ opcache \ - ; \ + ; \ # pecl will claim success even if one install fails, so we need to perform each install separately - pecl install APCu-5.1.18; \ - pecl install memcached-3.1.5; \ - pecl install redis-5.1.1; \ - \ - docker-php-ext-enable \ - apcu \ - memcached \ - redis \ - ; \ - \ - runDeps="$( \ - scanelf --needed --nobanner --format '%n#p' --recursive /usr/local/lib/php/extensions \ - | tr ',' '\n' \ - | sort -u \ - | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \ - )"; \ - apk add --virtual .monica-phpext-rundeps $runDeps; \ - apk del .build-deps; \ + pecl install APCu-5.1.18; \ + pecl install memcached-3.1.5; \ + pecl install redis-5.1.1; \ + \ + docker-php-ext-enable \ + apcu \ + memcached \ + redis \ + ; \ + \ + runDeps="$( \ + scanelf --needed --nobanner --format '%n#p' --recursive /usr/local/lib/php/extensions \ + | tr ',' '\n' \ + | sort -u \ + | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \ + )"; \ + apk add --virtual .monica-phpext-rundeps $runDeps; \ + apk del .build-deps; \ rm -rf /var/cache/apk/* # Set crontab for schedules RUN set -ex; \ - \ - rm /var/spool/cron/crontabs/root; \ + \ + rm /var/spool/cron/crontabs/root; \ echo '*/5 * * * * php /var/www/html/artisan schedule:run -v > /proc/1/fd/1 2> /proc/1/fd/2' > /var/spool/cron/crontabs/www-data # Opcache @@ -92,7 +92,7 @@ ENV PHP_OPCACHE_VALIDATE_TIMESTAMPS="0" \ PHP_OPCACHE_MEMORY_CONSUMPTION="192" \ PHP_OPCACHE_MAX_WASTED_PERCENTAGE="10" RUN { \ - echo '[opcache]'; \ + echo '[opcache]'; \ echo 'opcache.enable=1'; \ echo 'opcache.revalidate_freq=0'; \ echo "opcache.validate_timestamps=${PHP_OPCACHE_VALIDATE_TIMESTAMPS}"; \ @@ -101,38 +101,44 @@ RUN { \ echo "opcache.max_wasted_percentage=${PHP_OPCACHE_MAX_WASTED_PERCENTAGE}"; \ echo 'opcache.interned_strings_buffer=16'; \ echo 'opcache.fast_shutdown=1'; \ - } > /usr/local/etc/php/conf.d/opcache-recommended.ini; \ + } > $PHP_INI_DIR/conf.d/opcache-recommended.ini; \ \ - echo 'apc.enable_cli=1' >> /usr/local/etc/php/conf.d/docker-php-ext-apcu.ini; \ + echo 'apc.enable_cli=1' >> $PHP_INI_DIR/conf.d/docker-php-ext-apcu.ini; \ \ - echo 'memory_limit=512M' > /usr/local/etc/php/conf.d/memory-limit.ini + echo 'memory_limit=512M' > $PHP_INI_DIR/conf.d/memory-limit.ini # Sentry -RUN mkdir -p /root/.local/bin; \ - curl -sL https://sentry.io/get-cli/ | INSTALL_DIR=/root/.local/bin bash +RUN if [ $(uname -m) = "x86_64" ]; then \ + PLATFORM=$(uname -s); \ + if [ "$PLATFORM" = "Linux" -o "$PLATFORM" = "Windows" -o "$PLATFORM" = "Darwin" ]; then \ + mkdir -p /root/.local/bin; \ + curl -sL https://sentry.io/get-cli/ | INSTALL_DIR=/root/.local/bin bash; \ + fi \ + fi VOLUME /var/www/html # Define Monica version and expected SHA512 signature ENV MONICA_VERSION v2.16.0 ENV MONICA_SHA512 f2d1a434b5615bcd100388066854dfd36c81f403e817f45a21d4c04ec9ee022339c25334913586a51e763928d17d8b3fa79b6bf1883cac6fffe1aabfbd14ae3c +ENV MONICA_SRC /usr/src/monica RUN set -ex; \ apk add --no-cache --virtual .fetch-deps \ bzip2 \ ; \ \ - curl -fsSL -o monica.tar.bz2 "https://github.com/monicahq/monica/releases/download/${MONICA_VERSION}/monica-${MONICA_VERSION}.tar.bz2"; \ - echo "$MONICA_SHA512 *monica.tar.bz2" | sha512sum -c -; \ + curl -fsSL -o monica.tar.bz2 "https://github.com/monicahq/monica/releases/download/${MONICA_VERSION}/monica-${MONICA_VERSION}.tar.bz2"; \ + echo "$MONICA_SHA512 *monica.tar.bz2" | sha512sum -c -; \ \ - mkdir /usr/src/monica; \ - tar -xf monica.tar.bz2 -C /usr/src/monica --strip-components=1; \ - rm monica.tar.bz2; \ + mkdir $MONICA_SRC; \ + tar -xf monica.tar.bz2 -C $MONICA_SRC --strip-components=1; \ + rm monica.tar.bz2; \ \ - cp /usr/src/monica/.env.example /usr/src/monica/.env; \ - chown -R www-data:www-data /usr/src/monica; \ + cp $MONICA_SRC/.env.example $MONICA_SRC/.env; \ + chown -R www-data:www-data $MONICA_SRC; \ \ - apk del .fetch-deps; \ + apk del .fetch-deps; \ rm -rf /var/cache/apk/* COPY upgrade.exclude \ diff --git a/fpm/Dockerfile b/fpm/Dockerfile index 044a8f8..e676d6f 100644 --- a/fpm/Dockerfile +++ b/fpm/Dockerfile @@ -22,11 +22,11 @@ RUN set -ex; \ # Install required PHP extensions RUN set -ex; \ - \ - savedAptMark="$(apt-mark showmanual)"; \ - \ - apt-get update; \ - apt-get install -y --no-install-recommends \ + \ + savedAptMark="$(apt-mark showmanual)"; \ + \ + apt-get update; \ + apt-get install -y --no-install-recommends \ libicu-dev \ zlib1g-dev \ libzip-dev \ @@ -37,13 +37,13 @@ RUN set -ex; \ libgmp-dev \ libsodium-dev \ libmemcached-dev \ - ; \ - \ - debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \ - if [ ! -e /usr/include/gmp.h ]; then ln -s /usr/include/$debMultiarch/gmp.h /usr/include/gmp.h; fi;\ + ; \ + \ + debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \ + if [ ! -e /usr/include/gmp.h ]; then ln -s /usr/include/$debMultiarch/gmp.h /usr/include/gmp.h; fi;\ docker-php-ext-configure intl; \ docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/; \ - docker-php-ext-configure gmp --with-gmp="/usr/include/$debMultiarch"; \ + docker-php-ext-configure gmp --with-gmp="/usr/include/$debMultiarch"; \ docker-php-ext-install -j$(nproc) \ intl \ zip \ @@ -58,12 +58,12 @@ RUN set -ex; \ sodium \ mbstring \ opcache \ - ; \ - \ + ; \ + \ # pecl will claim success even if one install fails, so we need to perform each install separately - pecl install APCu-5.1.18; \ - pecl install memcached-3.1.5; \ - pecl install redis-5.1.1; \ + pecl install APCu-5.1.18; \ + pecl install memcached-3.1.5; \ + pecl install redis-5.1.1; \ \ docker-php-ext-enable \ apcu \ @@ -72,27 +72,27 @@ RUN set -ex; \ ; \ \ # 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; \ + 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/*; \ - \ - if command -v a2enmod; then \ - a2enmod rewrite; \ - fi + \ + if command -v a2enmod; then \ + a2enmod rewrite; \ + fi # Set crontab for schedules RUN set -ex; \ - \ - mkdir -p /var/spool/cron/crontabs; \ + \ + mkdir -p /var/spool/cron/crontabs; \ echo '*/5 * * * * php /var/www/html/artisan schedule:run -v > /proc/1/fd/1 2> /proc/1/fd/2' > /var/spool/cron/crontabs/www-data # Opcache @@ -101,7 +101,7 @@ ENV PHP_OPCACHE_VALIDATE_TIMESTAMPS="0" \ PHP_OPCACHE_MEMORY_CONSUMPTION="192" \ PHP_OPCACHE_MAX_WASTED_PERCENTAGE="10" RUN { \ - echo '[opcache]'; \ + echo '[opcache]'; \ echo 'opcache.enable=1'; \ echo 'opcache.revalidate_freq=0'; \ echo "opcache.validate_timestamps=${PHP_OPCACHE_VALIDATE_TIMESTAMPS}"; \ @@ -110,34 +110,40 @@ RUN { \ echo "opcache.max_wasted_percentage=${PHP_OPCACHE_MAX_WASTED_PERCENTAGE}"; \ echo 'opcache.interned_strings_buffer=16'; \ echo 'opcache.fast_shutdown=1'; \ - } > /usr/local/etc/php/conf.d/opcache-recommended.ini; \ + } > $PHP_INI_DIR/conf.d/opcache-recommended.ini; \ \ - echo 'apc.enable_cli=1' >> /usr/local/etc/php/conf.d/docker-php-ext-apcu.ini; \ + echo 'apc.enable_cli=1' >> $PHP_INI_DIR/conf.d/docker-php-ext-apcu.ini; \ \ - echo 'memory_limit=512M' > /usr/local/etc/php/conf.d/memory-limit.ini + echo 'memory_limit=512M' > $PHP_INI_DIR/conf.d/memory-limit.ini # Sentry -RUN mkdir -p /root/.local/bin; \ - curl -sL https://sentry.io/get-cli/ | INSTALL_DIR=/root/.local/bin bash +RUN if [ $(uname -m) = "x86_64" ]; then \ + PLATFORM=$(uname -s); \ + if [ "$PLATFORM" = "Linux" -o "$PLATFORM" = "Windows" -o "$PLATFORM" = "Darwin" ]; then \ + mkdir -p /root/.local/bin; \ + curl -sL https://sentry.io/get-cli/ | INSTALL_DIR=/root/.local/bin bash; \ + fi \ + fi VOLUME /var/www/html # Define Monica version and expected SHA512 signature ENV MONICA_VERSION v2.16.0 ENV MONICA_SHA512 f2d1a434b5615bcd100388066854dfd36c81f403e817f45a21d4c04ec9ee022339c25334913586a51e763928d17d8b3fa79b6bf1883cac6fffe1aabfbd14ae3c +ENV MONICA_SRC /usr/src/monica RUN set -eu; \ - curl -fsSL -o monica.tar.bz2 "https://github.com/monicahq/monica/releases/download/${MONICA_VERSION}/monica-${MONICA_VERSION}.tar.bz2"; \ - echo "$MONICA_SHA512 *monica.tar.bz2" | sha512sum -c -; \ + curl -fsSL -o monica.tar.bz2 "https://github.com/monicahq/monica/releases/download/${MONICA_VERSION}/monica-${MONICA_VERSION}.tar.bz2"; \ + echo "$MONICA_SHA512 *monica.tar.bz2" | sha512sum -c -; \ \ - mkdir /usr/src/monica; \ - tar -xf monica.tar.bz2 -C /usr/src/monica --strip-components=1; \ - rm monica.tar.bz2; \ + mkdir $MONICA_SRC; \ + tar -xf monica.tar.bz2 -C $MONICA_SRC --strip-components=1; \ + rm monica.tar.bz2; \ \ - cp /usr/src/monica/.env.example /usr/src/monica/.env; \ - chown -R www-data:www-data /usr/src/monica + cp $MONICA_SRC/.env.example $MONICA_SRC/.env; \ + chown -R www-data:www-data $MONICA_SRC COPY upgrade.exclude \ /usr/local/share/