FROM php:7.4-apache LABEL maintainer="Andy Miller (@rhukster)" # Enable Apache Rewrite + Expires Module RUN a2enmod rewrite expires && \ sed -i 's/ServerTokens OS/ServerTokens ProductOnly/g' \ /etc/apache2/conf-available/security.conf # Install dependencies RUN apt-get update && apt-get install -y --no-install-recommends \ unzip \ libfreetype6-dev \ libjpeg62-turbo-dev \ libpng-dev \ libyaml-dev \ libzip4 \ libzip-dev \ zlib1g-dev \ libicu-dev \ g++ \ git \ cron \ vim \ && docker-php-ext-install opcache \ && docker-php-ext-configure intl \ && docker-php-ext-install intl \ && docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/ \ && docker-php-ext-install -j$(nproc) gd \ && docker-php-ext-install zip \ && 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=2'; \ echo 'opcache.fast_shutdown=1'; \ echo 'opcache.enable_cli=1'; \ echo 'upload_max_filesize=128M'; \ echo 'post_max_size=128M'; \ echo 'expose_php=off'; \ } > /usr/local/etc/php/conf.d/php-recommended.ini RUN pecl install apcu \ && pecl install yaml-2.0.4 \ && docker-php-ext-enable apcu yaml # Install Supercronic ENV SUPERCRONIC_URL=https://github.com/aptible/supercronic/releases/download/v0.1.12/supercronic-linux-amd64 \ SUPERCRONIC=supercronic-linux-amd64 \ SUPERCRONIC_SHA1SUM=048b95b48b708983effb2e5c935a1ef8483d9e3e RUN curl -fsSLO "$SUPERCRONIC_URL" \ && echo "${SUPERCRONIC_SHA1SUM} ${SUPERCRONIC}" | sha1sum -c - \ && chmod +x "$SUPERCRONIC" \ && mv "$SUPERCRONIC" "/usr/local/bin/${SUPERCRONIC}" \ && ln -s "/usr/local/bin/${SUPERCRONIC}" /usr/local/bin/supercronic # Create cron job for Grav maintenance scripts RUN echo "*/30 * * * * cd /var/www/html;/usr/local/bin/php bin/grav scheduler 1>> /dev/null 2>&1" > /var/www/crontab COPY entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh RUN sed -i s/80/{{ grav_internal_port }}/g /etc/apache2/sites-enabled/000-default.conf /etc/apache2/ports.conf # Set user to www-data RUN chown www-data:www-data /var/www USER www-data # Set Grav version ARG GRAV_VERSION={{ grav_version }} # Install grav WORKDIR /var/www RUN curl -o grav-admin.zip -SL https://getgrav.org/download/core/grav-admin/${GRAV_VERSION} && \ unzip grav-admin.zip && \ mv -T /var/www/grav-admin /var/www/html && \ rm grav-admin.zip # Install plugins RUN cd html && \ bin/gpm install admin # provide container inside image for data persistance VOLUME ["/var/www/html"] ENTRYPOINT ["/entrypoint.sh"] CMD ["apache2-foreground"]