From: VirtualTam Date: Wed, 20 Jun 2018 14:29:06 +0000 (+0200) Subject: Merge pull request #1156 from virtualtam/v0.8-dockerfile X-Git-Tag: v0.8.7~1 X-Git-Url: https://git.immae.eu/?a=commitdiff_plain;h=9e425954817621711a528bb3bd2972692a2a528a;hp=c648fc34f882ca6a62f5a44d1826bbd2b9852845;p=github%2Fshaarli%2FShaarli.git Merge pull request #1156 from virtualtam/v0.8-dockerfile v0.8 - Build the Docker image from the local sources --- diff --git a/docker/.htaccess b/.docker/.htaccess similarity index 100% rename from docker/.htaccess rename to .docker/.htaccess diff --git a/docker/development/nginx.conf b/.docker/nginx.conf similarity index 85% rename from docker/development/nginx.conf rename to .docker/nginx.conf index ac0c6c61..e8754d9b 100644 --- a/docker/development/nginx.conf +++ b/.docker/nginx.conf @@ -22,14 +22,6 @@ http { access_log /var/log/nginx/shaarli.access.log; error_log /var/log/nginx/shaarli.error.log; - location /phpinfo/ { - # add a PHP info page for convenience - fastcgi_pass unix:/var/run/php5-fpm.sock; - fastcgi_index index.php; - fastcgi_param SCRIPT_FILENAME /var/www/index.php; - include fastcgi_params; - } - location ~ /\. { # deny access to dotfiles access_log off; @@ -56,7 +48,16 @@ http { 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; diff --git a/docker/development/supervised.conf b/.docker/supervised.conf similarity index 100% rename from docker/development/supervised.conf rename to .docker/supervised.conf diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..9a18e085 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,34 @@ +# Docker-ignore +# Note: .git/ is kept for HTML documentation generation +tests + +# 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/.travis.yml b/.travis.yml index 6ff1b20f..e59c8f6a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,7 +9,7 @@ php: - 5.6 - 5.5 - 5.4 - - 5.3 + # - 5.3 # Not supported by Travis CI install: - composer self-update - composer install --prefer-dist diff --git a/CHANGELOG.md b/CHANGELOG.md index 84dc18cc..3f5bafd1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,9 +4,15 @@ 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 + +### Removed +- Disable PHP 5.3 Travis build (unsupported) -## [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..e8067031 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,50 @@ +# Stage 1: +# - Get Shaarli sources +# - Build documentation +FROM dalibo/pandocker:stable as docs +ADD . /pandoc/shaarli +RUN cd /pandoc/shaarli \ + && make htmldoc \ + && rm -rf .git + +# Stage 2: +# - Resolve PHP dependencies with Composer +FROM composer:latest as composer +COPY --from=docs /pandoc/shaarli /app/shaarli +RUN cd shaarli \ + && composer --prefer-dist --no-dev install + +# Stage 3: +# - 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"] diff --git a/Makefile b/Makefile index 60aec9a0..47f3530f 100644 --- a/Makefile +++ b/Makefile @@ -11,6 +11,7 @@ # - install Xdebug for PHPUnit code coverage reports: # - see http://xdebug.org/docs/install # - enable in php.ini +SHELL := /bin/bash BIN = vendor/bin PHP_SOURCE = index.php application tests plugins @@ -203,14 +204,18 @@ htmlsidebar: htmlpages: @for file in `find doc/ -maxdepth 1 -name "*.md"`; do \ base=`basename $$file .md`; \ - sed -i "1i #$${base//-/ }" $$file; \ + sed -i "1i # $${base//-/ }" $$file; \ awk 'BEGIN { FS = "[\\[\\]]{2}" }'\ 'm = /\[/ { t=$$2; gsub(/ /, "-", $$2); print $$1"["t"]("$$2".html)"$$3 }'\ '!m { print $$0 }' $$file > doc/tmp.md; \ mv doc/tmp.md $$file; \ - pandoc -f markdown_github -t html5 -s \ + pandoc -f gfm \ + -t html5 \ + -s \ -c "github-markdown.css" \ - -T Shaarli -M pagetitle:"$${base//-/ }" -B doc/sidebar.html \ + -T Shaarli \ + -M pagetitle:"$${base//-/ }" \ + -B doc/sidebar.html \ -o doc/$$base.html $$file; \ done; diff --git a/docker/development/Dockerfile b/docker/development/Dockerfile deleted file mode 100644 index d9ef8da7..00000000 --- a/docker/development/Dockerfile +++ /dev/null @@ -1,38 +0,0 @@ -FROM debian:jessie -MAINTAINER Shaarli Community - -ENV TERM dumb -RUN apt-get update \ - && apt-get install --no-install-recommends -y \ - ca-certificates \ - nginx-light \ - php5-curl \ - php5-fpm \ - php5-gd \ - php5-intl \ - supervisor \ - git \ - nano \ - && apt-get clean - -RUN sed -i 's/post_max_size.*/post_max_size = 10M/' /etc/php5/fpm/php.ini -RUN sed -i 's/upload_max_filesize.*/upload_max_filesize = 10M/' /etc/php5/fpm/php.ini -COPY nginx.conf /etc/nginx/nginx.conf -COPY supervised.conf /etc/supervisor/conf.d/supervised.conf - -ADD https://getcomposer.org/composer.phar /usr/local/bin/composer -RUN chmod 755 /usr/local/bin/composer - -WORKDIR /var/www -RUN git clone https://github.com/shaarli/Shaarli.git shaarli \ - && cd shaarli \ - && composer --prefer-dist install -RUN rm -rf html \ - && echo "" > index.php \ - && chown -R www-data:www-data . - -VOLUME /var/www/shaarli/data - -EXPOSE 80 - -CMD ["/usr/bin/supervisord", "-n", "-c", "/etc/supervisor/supervisord.conf"] diff --git a/docker/development/IMAGE.md b/docker/development/IMAGE.md deleted file mode 100644 index e2ff0f0e..00000000 --- a/docker/development/IMAGE.md +++ /dev/null @@ -1,10 +0,0 @@ -## shaarli:dev -- [Debian 8 Jessie](https://hub.docker.com/_/debian/) -- [PHP5-FPM](http://php-fpm.org/) -- [Nginx](http://nginx.org/) -- [Shaarli](https://github.com/shaarli/Shaarli) - -### Development tools -- [composer](https://getcomposer.org/) -- [git](http://git-scm.com/) -- [nano](http://www.nano-editor.org/) diff --git a/docker/production/Dockerfile b/docker/production/Dockerfile deleted file mode 100644 index d0509115..00000000 --- a/docker/production/Dockerfile +++ /dev/null @@ -1,37 +0,0 @@ -FROM debian:jessie -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 -RUN sed -i 's/upload_max_filesize.*/upload_max_filesize = 10M/' /etc/php5/fpm/php.ini -COPY nginx.conf /etc/nginx/nginx.conf -COPY supervised.conf /etc/supervisor/conf.d/supervised.conf - -ADD https://getcomposer.org/composer.phar /usr/local/bin/composer -RUN chmod 755 /usr/local/bin/composer - -WORKDIR /var/www -RUN curl -L https://github.com/shaarli/Shaarli/archive/master.tar.gz | tar xzf - \ - && mv Shaarli-master shaarli \ - && cd shaarli \ - && composer --prefer-dist --no-dev install -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"] diff --git a/docker/production/IMAGE.md b/docker/production/IMAGE.md deleted file mode 100644 index 6f827b35..00000000 --- a/docker/production/IMAGE.md +++ /dev/null @@ -1,5 +0,0 @@ -## shaarli:latest -- [Debian 8 Jessie](https://hub.docker.com/_/debian/) -- [PHP5-FPM](http://php-fpm.org/) -- [Nginx](http://nginx.org/) -- [Shaarli](https://github.com/shaarli/Shaarli) diff --git a/docker/production/nginx.conf b/docker/production/nginx.conf deleted file mode 100644 index 5ffa02d0..00000000 --- a/docker/production/nginx.conf +++ /dev/null @@ -1,63 +0,0 @@ -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 ~ (index)\.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/production/stable/Dockerfile b/docker/production/stable/Dockerfile deleted file mode 100644 index fc9588b0..00000000 --- a/docker/production/stable/Dockerfile +++ /dev/null @@ -1,37 +0,0 @@ -FROM debian:jessie -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 -RUN sed -i 's/upload_max_filesize.*/upload_max_filesize = 10M/' /etc/php5/fpm/php.ini -COPY nginx.conf /etc/nginx/nginx.conf -COPY supervised.conf /etc/supervisor/conf.d/supervised.conf - -ADD https://getcomposer.org/composer.phar /usr/local/bin/composer -RUN chmod 755 /usr/local/bin/composer - -WORKDIR /var/www -RUN curl -L https://github.com/shaarli/Shaarli/archive/stable.tar.gz | tar xzf - \ - && mv Shaarli-stable shaarli \ - && cd shaarli \ - && composer --prefer-dist --no-dev install -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"] diff --git a/docker/production/stable/IMAGE.md b/docker/production/stable/IMAGE.md deleted file mode 100644 index d85b1d7a..00000000 --- a/docker/production/stable/IMAGE.md +++ /dev/null @@ -1,5 +0,0 @@ -## shaarli:stable -- [Debian 8 Jessie](https://hub.docker.com/_/debian/) -- [PHP5-FPM](http://php-fpm.org/) -- [Nginx](http://nginx.org/) -- [Shaarli (stable)](https://github.com/shaarli/Shaarli/tree/stable) diff --git a/docker/production/stable/nginx.conf b/docker/production/stable/nginx.conf deleted file mode 100644 index 5ffa02d0..00000000 --- a/docker/production/stable/nginx.conf +++ /dev/null @@ -1,63 +0,0 @@ -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 ~ (index)\.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/production/stable/supervised.conf b/docker/production/stable/supervised.conf deleted file mode 100644 index 5acd9795..00000000 --- a/docker/production/stable/supervised.conf +++ /dev/null @@ -1,13 +0,0 @@ -[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/docker/production/supervised.conf b/docker/production/supervised.conf deleted file mode 100644 index 5acd9795..00000000 --- a/docker/production/supervised.conf +++ /dev/null @@ -1,13 +0,0 @@ -[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