From 35927142d7440f6a7c360e53b2beb3a6834835f0 Mon Sep 17 00:00:00 2001 From: VirtualTam Date: Sat, 16 Jun 2018 23:08:26 +0200 Subject: [PATCH] docker: build the image from the local sources Relates to https://github.com/shaarli/Shaarli/issues/1153 Signed-off-by: VirtualTam --- .docker/.htaccess | 13 ++++++++ .docker/nginx.conf | 72 +++++++++++++++++++++++++++++++++++++++++ .docker/supervised.conf | 13 ++++++++ .dockerignore | 30 +++++++++++++++++ .gitattributes | 4 ++- CHANGELOG.md | 5 ++- Dockerfile | 42 ++++++++++++++++++++++++ 7 files changed, 177 insertions(+), 2 deletions(-) create mode 100644 .docker/.htaccess create mode 100644 .docker/nginx.conf create mode 100644 .docker/supervised.conf create mode 100644 .dockerignore create mode 100644 Dockerfile diff --git a/.docker/.htaccess b/.docker/.htaccess new file mode 100644 index 00000000..f601c1ee --- /dev/null +++ b/.docker/.htaccess @@ -0,0 +1,13 @@ + + = 2.4> + Require all denied + + + Allow from none + Deny from all + + + + + Require all denied + diff --git a/.docker/nginx.conf b/.docker/nginx.conf new file mode 100644 index 00000000..e8754d9b --- /dev/null +++ b/.docker/nginx.conf @@ -0,0 +1,72 @@ +user www-data www-data; +daemon off; +worker_processes 4; + +events { + worker_connections 768; +} + +http { + include mime.types; + default_type application/octet-stream; + keepalive_timeout 20; + + client_max_body_size 10m; + + index index.html index.php; + + server { + listen 80; + root /var/www/shaarli; + + access_log /var/log/nginx/shaarli.access.log; + error_log /var/log/nginx/shaarli.error.log; + + location ~ /\. { + # deny access to dotfiles + access_log off; + log_not_found off; + deny all; + } + + location ~ ~$ { + # deny access to temp editor files, e.g. "script.php~" + access_log off; + log_not_found off; + deny all; + } + + location ~* \.(?:ico|css|js|gif|jpe?g|png)$ { + # cache static assets + expires max; + add_header Pragma public; + add_header Cache-Control "public, must-revalidate, proxy-revalidate"; + } + + location = /favicon.ico { + # serve the Shaarli favicon from its custom location + alias /var/www/shaarli/images/favicon.ico; + } + + location / { + # Slim - rewrite URLs + try_files $uri /index.php$is_args$args; + } + + location ~ (index)\.php$ { + # Slim - split URL path into (script_filename, path_info) + try_files $uri =404; + fastcgi_split_path_info ^(.+\.php)(/.+)$; + + # filter and proxy PHP requests to PHP-FPM + fastcgi_pass unix:/var/run/php5-fpm.sock; + fastcgi_index index.php; + include fastcgi.conf; + } + + location ~ \.php$ { + # deny access to all other PHP scripts + deny all; + } + } +} diff --git a/.docker/supervised.conf b/.docker/supervised.conf new file mode 100644 index 00000000..5acd9795 --- /dev/null +++ b/.docker/supervised.conf @@ -0,0 +1,13 @@ +[program:php5-fpm] +command=/usr/sbin/php5-fpm -F +priority=5 +autostart=true +autorestart=true + +[program:nginx] +command=/usr/sbin/nginx +priority=10 +autostart=true +autorestart=true +stdout_events_enabled=true +stderr_events_enabled=true diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..c92a2a14 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,30 @@ +# Shaarli runtime resources +cache/* +data/* +pagecache/* +tmp/* + +# Eclipse project files +.settings +.buildpath +.project + +# Raintpl generated pages +*.rtpl.php + +# 3rd-party dependencies +composer.lock +vendor/ + +# Release archives +*.tar +*.zip + +# Development and test resources +coverage +doxygen +sandbox +phpmd.html + +# User plugin configuration +plugins/*/config.php diff --git a/.gitattributes b/.gitattributes index d753b1db..a3a22a15 100644 --- a/.gitattributes +++ b/.gitattributes @@ -23,7 +23,9 @@ Dockerfile text .travis.yml export-ignore doc/**/*.json export-ignore doc/**/*.md export-ignore -docker/ export-ignore +.docker/ export-ignore +.dockerignore export-ignore +Dockerfile export-ignore Doxyfile export-ignore Makefile export-ignore phpunit.xml export-ignore diff --git a/CHANGELOG.md b/CHANGELOG.md index 84dc18cc..90841018 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,9 +4,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). +## [v0.8.7](https://github.com/shaarli/Shaarli/releases/tag/v0.8.7) - UNPUBLISHED +### Changed +- Build the Docker image from the local Git sources -## [v0.8.6](https://github.com/shaarli/Shaarli/releases/tag/v0.8.5) - 2018-02-19 +## [v0.8.6](https://github.com/shaarli/Shaarli/releases/tag/v0.8.6) - 2018-02-19 ### Changed - Run version check tests against the 'stable' branch diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..5e03814c --- /dev/null +++ b/Dockerfile @@ -0,0 +1,42 @@ +# Stage 1: +# - Get Shaarli sources +# - Resolve PHP dependencies with Composer +FROM composer:latest as composer +ADD . /app/shaarli +RUN cd shaarli \ + && composer --prefer-dist --no-dev install + +# Stage 2: +# - Shaarli image +FROM debian:jessie +LABEL maintainer="Shaarli Community" + +ENV TERM dumb +RUN apt-get update \ + && apt-get install --no-install-recommends -y \ + ca-certificates \ + curl \ + nginx-light \ + php5-curl \ + php5-fpm \ + php5-gd \ + php5-intl \ + supervisor \ + && apt-get clean + +RUN sed -i 's/post_max_size.*/post_max_size = 10M/' /etc/php5/fpm/php.ini \ + && sed -i 's/upload_max_filesize.*/upload_max_filesize = 10M/' /etc/php5/fpm/php.ini + +COPY .docker/nginx.conf /etc/nginx/nginx.conf +COPY .docker/supervised.conf /etc/supervisor/conf.d/supervised.conf + +WORKDIR /var/www +COPY --from=composer /app/shaarli shaarli +RUN rm -rf html \ + && chown -R www-data:www-data . + +VOLUME /var/www/shaarli/data + +EXPOSE 80 + +CMD ["/usr/bin/supervisord", "-n", "-c", "/etc/supervisor/supervisord.conf"] -- 2.41.0