build-grav/Dockerfile

73 lines
2.0 KiB
Docker

FROM php:7.4-fpm
LABEL maintainer="Andrei Condurachi <andrei@condurachi.ro> (@acondura)"
# Ubuntu repo updates
RUN apt-get update
# 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 \
libmemcached11 \
libmemcachedutil2 \
build-essential \
libmemcached-dev \
libwebp-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 --with-webp \
&& docker-php-ext-install -j$(nproc) gd imap openssl exif fileinfo \
&& docker-php-ext-install zip \
&& rm -rf /var/lib/apt/lists/*
# Enable Apache Rewrite + Expires Module
RUN a2enmod rewrite expires && \
sed -i 's/ServerTokens OS/ServerTokens ProductOnly/g' \
/etc/apache2/conf-available/security.conf
# Install composer
RUN curl --silent --show-error https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN pecl install apcu \
&& pecl install yaml-2.1.0 \
&& docker-php-ext-enable apcu yaml
# 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
ENV 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 && \
rm grav-admin.zip
# 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 -
# Accept incoming HTTP requests
EXPOSE 80/tcp
# Return to root user
USER root
# provide container inside image for data persistence
VOLUME ["/var/www/html"]
CMD ["sh", "-c", "apache2-foreground"]