diff --git a/Dockerfile b/Dockerfile index 1fdbae1..bde2904 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,26 +1,31 @@ -FROM php:7.2-apache +FROM php:7.3-apache LABEL maintainer="Andy Miller (@rhukster)" # Enable Apache Rewrite + Expires Module RUN a2enmod rewrite expires # Install dependencies -RUN apt-get update && apt-get install -y \ - unzip \ - libfreetype6-dev \ - libjpeg62-turbo-dev \ - libpng-dev \ - libyaml-dev \ - zlib1g-dev \ - libicu-dev \ - g++ \ - git \ +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-dir=/usr/include/ --with-jpeg-dir=/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 @@ -36,11 +41,8 @@ RUN { \ echo 'extension=intl.so'; \ } > /usr/local/etc/php/conf.d/php-recommended.ini - # provide container inside image for data persistance -# VOLUME /var/www/html - RUN pecl install apcu \ - && pecl install yaml \ + && pecl install yaml-2.0.4 \ && docker-php-ext-enable apcu yaml # Set user to www-data @@ -48,8 +50,8 @@ RUN chown www-data:www-data /var/www USER www-data # Define Grav version and expected SHA1 signature -ENV GRAV_VERSION 1.5.1 -ENV GRAV_SHA1 5292b05d304329beefeddffbf9f542916012c221 +ENV GRAV_VERSION 1.6.19 +ENV GRAV_SHA1 231e6789e9575adccd6044aa0d0c72b8c2603a96 # Install grav WORKDIR /var/www @@ -59,11 +61,18 @@ RUN curl -o grav-admin.zip -SL https://getgrav.org/download/core/grav-admin/${GR 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 - + # Return to root user USER root # Copy init scripts # COPY docker-entrypoint.sh /entrypoint.sh +# provide container inside image for data persistance +VOLUME ["/var/www/html"] + # ENTRYPOINT ["/entrypoint.sh"] # CMD ["apache2-foreground"] +CMD ["sh", "-c", "cron && apache2-foreground"] diff --git a/README.md b/README.md index ef44a85..9b8877f 100644 --- a/README.md +++ b/README.md @@ -2,13 +2,15 @@ This currently is pretty minimal and uses: -* apache-2.4.8 +* apache-2.4.38 * GD library * Unzip library -* php7.2 -* php7.2-opcache -* php7.2-acpu -* php7.2-yaml +* php7.3 +* php7.3-opcache +* php7.3-acpu +* php7.3-yaml +* cron +* vim editor ## Building the image from Dockerfile @@ -16,26 +18,16 @@ This currently is pretty minimal and uses: docker build -t grav:latest . ``` -## Running Grav Image with Latest Grav + Admin (not persistent): +## Running Grav Image with Latest Grav + Admin: ``` docker run -p 8000:80 grav:latest ``` -Point browser to `http://localhost/8000` and create user account... +Point browser to `http://localhost:8000` and create user account... -## Running local Grav installation - -This assumes you have already downloaded a Grav package into a local folder. This is the best way to run Grav if you want to have your changes persisted between restarts of the docker container. +## Running Grav Image with Latest Grav + Admin with a named volume (can be used in production) ``` -docker run -v /local/grav/install:/var/www/html:cached -p 8000:80/tcp grav:latest +docker run -d -p 8000:80 --name grav --restart always -v grav_data:/var/www/html grav:1.0 ``` - -To run in the current directory you can use: - -``` -docker run -v `pwd`:/var/www/html:cached -p 8000:80/tcp grav:latest -``` - -Point browser to `http://localhost/8000` to access your Grav site