2022-03-29 01:30:21 +02:00
|
|
|
FROM php:7.4-apache
|
|
|
|
LABEL maintainer="Andy Miller <rhuk@getgrav.org> (@rhukster)"
|
|
|
|
|
|
|
|
RUN usermod --uid 1000 www-data
|
|
|
|
RUN groupmod --gid 1000 www-data
|
|
|
|
# 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 --with-jpeg \
|
|
|
|
&& 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
|
|
|
|
|
|
|
|
CMD ["sh", "-c", "usermod --uid 1000 www-data"]
|
|
|
|
CMD ["sh", "-c", "groupmod --gid 1000 www-data"]
|
|
|
|
# Set user to www-data
|
|
|
|
RUN chown www-data:www-data /var/www
|
|
|
|
USER www-data
|
|
|
|
|
|
|
|
# Define Grav specific version of Grav or use latest stable
|
|
|
|
ARG GRAV_VERSION=latest
|
|
|
|
|
|
|
|
# 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 && \
|
2022-08-04 00:01:03 +02:00
|
|
|
rm grav-admin.zip
|
2022-03-29 01:30:21 +02:00
|
|
|
|
2022-08-04 00:01:03 +02:00
|
|
|
# Install plugins
|
|
|
|
WORKDIR /var/www/html
|
2022-03-29 01:30:21 +02:00
|
|
|
|
2022-08-04 00:01:03 +02:00
|
|
|
RUN bin/gpm install admin email feed git-sync langswitcher presentation shortcode-core anchors error flex-objects highlight login presentation-deckset tntsearch breadcrumbs external_links form image-captions markdown-notices problems
|
2022-08-03 20:23:47 +02:00
|
|
|
|
2022-08-04 00:01:03 +02:00
|
|
|
# Create cron job for Grav maintenance scripts
|
|
|
|
RUN (crontab -l; echo "* * * * * cd /var/www/html;/usr/local/bin/php bin/grav scheduler 1>> /dev/null 2>&1") | crontab -
|
2022-08-03 20:23:47 +02:00
|
|
|
|
2022-03-29 01:30:21 +02:00
|
|
|
# Return to root user
|
|
|
|
USER root
|
|
|
|
|
|
|
|
# Copy init scripts
|
|
|
|
# COPY docker-entrypoint.sh /entrypoint.sh
|
|
|
|
|
2022-08-04 00:01:03 +02:00
|
|
|
COPY --chown=1000:1000 themes/learn4 /var/www/html/user/themes/learn4
|
|
|
|
|
2022-03-29 01:30:21 +02:00
|
|
|
# provide container inside image for data persistence
|
2022-08-03 20:23:47 +02:00
|
|
|
VOLUME ["/var/www/html/backup", "/var/www/html/user/themes/yunohost-docs", "/var/www/html/logs", "/var/www/html/user/pages", "/var/www/html/user/config", "/var/www/html/user/images"]
|
2022-03-29 01:30:21 +02:00
|
|
|
|
|
|
|
# ENTRYPOINT ["/entrypoint.sh"]
|
|
|
|
# CMD ["apache2-foreground"]
|
|
|
|
CMD ["sh", "-c", "cron && apache2-foreground"]
|