diff --git a/docker/.htaccess b/.docker/.htaccess similarity index 100% rename from docker/.htaccess rename to .docker/.htaccess diff --git a/docker/alpine/nginx.conf b/.docker/nginx.conf similarity index 100% rename from docker/alpine/nginx.conf rename to .docker/nginx.conf diff --git a/docker/alpine/php-fpm.conf b/.docker/php-fpm.conf similarity index 100% rename from docker/alpine/php-fpm.conf rename to .docker/php-fpm.conf diff --git a/docker/alpine/services.d/.s6-svscan/finish b/.docker/services.d/.s6-svscan/finish similarity index 100% rename from docker/alpine/services.d/.s6-svscan/finish rename to .docker/services.d/.s6-svscan/finish diff --git a/docker/alpine/services.d/nginx/run b/.docker/services.d/nginx/run similarity index 100% rename from docker/alpine/services.d/nginx/run rename to .docker/services.d/nginx/run diff --git a/docker/alpine/services.d/php-fpm/run b/.docker/services.d/php-fpm/run similarity index 100% rename from docker/alpine/services.d/php-fpm/run rename to .docker/services.d/php-fpm/run diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..cdd0a89 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,44 @@ +# Docker-ignore +.dev +.git +.github +tests + +# Shaarli runtime resources +cache/* +data/* +pagecache/* +tmp/* + +# Eclipse project files +.settings +.buildpath +.project + +# Raintpl generated pages +*.rtpl.php + +# 3rd-party dependencies +vendor/ + +# Release archives +*.tar.gz +*.zip +inc/languages/*/LC_MESSAGES/shaarli.mo + +# Development and test resources +coverage +doxygen +sandbox +phpmd.html + +# User plugin configuration +plugins/*/config.php + +# HTML documentation +doc/html/ + +# 3rd party themes +tpl/* +!tpl/default +!tpl/vintage diff --git a/.gitattributes b/.gitattributes index b191e22..0007056 100644 --- a/.gitattributes +++ b/.gitattributes @@ -32,7 +32,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 mkdocs.yml export-ignore diff --git a/CHANGELOG.md b/CHANGELOG.md index f0ba390..b5fd3f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,8 +4,13 @@ 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.9.7](https://github.com/shaarli/Shaarli/releases/tag/v0.9.7) - 2018-06-20 +### Changed +- Build the Docker images from the local Git sources + + ## [v0.9.6](https://github.com/shaarli/Shaarli/releases/tag/v0.9.6) - 2018-03-25 -## Changed +### Changed - htaccess: prevent accessing resources not managed by SCM - htaccess: always forward the 'Authorization' HTTP header diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..93146c5 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,61 @@ +# Stage 1: +# - Copy Shaarli sources +# - Build documentation +FROM python:3-alpine as docs +ADD . /usr/src/app/shaarli +RUN cd /usr/src/app/shaarli \ + && pip install --no-cache-dir mkdocs \ + && mkdocs build + +# Stage 2: +# - Resolve PHP dependencies with Composer +FROM composer:latest as composer +COPY --from=docs /usr/src/app/shaarli /app/shaarli +RUN cd shaarli \ + && composer --prefer-dist --no-dev install + +# Stage 3: +# - Shaarli image +FROM alpine:3.6 +LABEL maintainer="Shaarli Community" + +RUN apk --update --no-cache add \ + ca-certificates \ + nginx \ + php7 \ + php7-ctype \ + php7-curl \ + php7-fpm \ + php7-gd \ + php7-iconv \ + php7-intl \ + php7-json \ + php7-mbstring \ + php7-openssl \ + php7-session \ + php7-xml \ + php7-zlib \ + s6 + +COPY .docker/nginx.conf /etc/nginx/nginx.conf +COPY .docker/php-fpm.conf /etc/php7/php-fpm.conf +COPY .docker/services.d /etc/services.d + +RUN rm -rf /etc/php7/php-fpm.d/www.conf \ + && sed -i 's/post_max_size.*/post_max_size = 10M/' /etc/php7/php.ini \ + && sed -i 's/upload_max_filesize.*/upload_max_filesize = 10M/' /etc/php7/php.ini + + +WORKDIR /var/www +COPY --from=composer /app/shaarli shaarli + +RUN chown -R nginx:nginx . \ + && ln -sf /dev/stdout /var/log/nginx/shaarli.access.log \ + && ln -sf /dev/stderr /var/log/nginx/shaarli.error.log + +VOLUME /var/www/shaarli/data + +EXPOSE 80 + +ENTRYPOINT ["/bin/s6-svscan", "/etc/services.d"] +CMD [] diff --git a/docker/alpine/Dockerfile.armhf.latest b/Dockerfile.armhf similarity index 77% rename from docker/alpine/Dockerfile.armhf.latest rename to Dockerfile.armhf index c923834..2469563 100644 --- a/docker/alpine/Dockerfile.armhf.latest +++ b/Dockerfile.armhf @@ -1,4 +1,5 @@ FROM lsiobase/alpine.armhf:3.6 +LABEL maintainer="Shaarli Community" MAINTAINER Shaarli Community RUN apk --update --no-cache add \ @@ -21,9 +22,9 @@ RUN apk --update --no-cache add \ php7-zlib \ s6 -COPY nginx.conf /etc/nginx/nginx.conf -COPY php-fpm.conf /etc/php7/php-fpm.conf -COPY services.d /etc/services.d +COPY .docker/nginx.conf /etc/nginx/nginx.conf +COPY .docker/php-fpm.conf /etc/php7/php-fpm.conf +COPY .docker/services.d /etc/services.d RUN curl -sS https://getcomposer.org/installer | php7 -- --install-dir=/usr/local/bin --filename=composer \ && rm -rf /etc/php7/php-fpm.d/www.conf \ @@ -37,7 +38,9 @@ RUN curl -L https://github.com/shaarli/Shaarli/archive/latest.tar.gz | tar xzf - && cd shaarli \ && composer --prefer-dist --no-dev install \ && rm -rf ~/.composer \ - && chown -R nginx:nginx . + && chown -R nginx:nginx . \ + && ln -sf /dev/stdout /var/log/nginx/shaarli.access.log \ + && ln -sf /dev/stderr /var/log/nginx/shaarli.error.log VOLUME /var/www/shaarli/data diff --git a/docker/alpine/Dockerfile.armhf.master b/docker/alpine/Dockerfile.armhf.master deleted file mode 100644 index 7f1bdf8..0000000 --- a/docker/alpine/Dockerfile.armhf.master +++ /dev/null @@ -1,47 +0,0 @@ -FROM lsiobase/alpine.armhf:3.6 -MAINTAINER Shaarli Community - -RUN apk --update --no-cache add \ - ca-certificates \ - curl \ - nginx \ - php7 \ - php7-ctype \ - php7-curl \ - php7-fpm \ - php7-gd \ - php7-iconv \ - php7-intl \ - php7-json \ - php7-mbstring \ - php7-openssl \ - php7-phar \ - php7-session \ - php7-xml \ - php7-zlib \ - s6 - -COPY nginx.conf /etc/nginx/nginx.conf -COPY php-fpm.conf /etc/php7/php-fpm.conf -COPY services.d /etc/services.d - -RUN curl -sS https://getcomposer.org/installer | php7 -- --install-dir=/usr/local/bin --filename=composer \ - && rm -rf /etc/php7/php-fpm.d/www.conf \ - && sed -i 's/post_max_size.*/post_max_size = 10M/' /etc/php7/php.ini \ - && sed -i 's/upload_max_filesize.*/upload_max_filesize = 10M/' /etc/php7/php.ini - - -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 \ - && rm -rf ~/.composer \ - && chown -R nginx:nginx . - -VOLUME /var/www/shaarli/data - -EXPOSE 80 - -ENTRYPOINT ["/bin/s6-svscan", "/etc/services.d"] -CMD [] diff --git a/docker/alpine/Dockerfile.latest b/docker/alpine/Dockerfile.latest deleted file mode 100644 index dd4a173..0000000 --- a/docker/alpine/Dockerfile.latest +++ /dev/null @@ -1,47 +0,0 @@ -FROM alpine:3.6 -MAINTAINER Shaarli Community - -RUN apk --update --no-cache add \ - ca-certificates \ - curl \ - nginx \ - php7 \ - php7-ctype \ - php7-curl \ - php7-fpm \ - php7-gd \ - php7-iconv \ - php7-intl \ - php7-json \ - php7-mbstring \ - php7-openssl \ - php7-phar \ - php7-session \ - php7-xml \ - php7-zlib \ - s6 - -COPY nginx.conf /etc/nginx/nginx.conf -COPY php-fpm.conf /etc/php7/php-fpm.conf -COPY services.d /etc/services.d - -RUN curl -sS https://getcomposer.org/installer | php7 -- --install-dir=/usr/local/bin --filename=composer \ - && rm -rf /etc/php7/php-fpm.d/www.conf \ - && sed -i 's/post_max_size.*/post_max_size = 10M/' /etc/php7/php.ini \ - && sed -i 's/upload_max_filesize.*/upload_max_filesize = 10M/' /etc/php7/php.ini - - -WORKDIR /var/www -RUN curl -L https://github.com/shaarli/Shaarli/archive/latest.tar.gz | tar xzf - \ - && mv Shaarli-latest shaarli \ - && cd shaarli \ - && composer --prefer-dist --no-dev install \ - && rm -rf ~/.composer \ - && chown -R nginx:nginx . - -VOLUME /var/www/shaarli/data - -EXPOSE 80 - -ENTRYPOINT ["/bin/s6-svscan", "/etc/services.d"] -CMD [] diff --git a/docker/alpine/Dockerfile.master b/docker/alpine/Dockerfile.master deleted file mode 100644 index 58f7c6e..0000000 --- a/docker/alpine/Dockerfile.master +++ /dev/null @@ -1,47 +0,0 @@ -FROM alpine:3.6 -MAINTAINER Shaarli Community - -RUN apk --update --no-cache add \ - ca-certificates \ - curl \ - nginx \ - php7 \ - php7-ctype \ - php7-curl \ - php7-fpm \ - php7-gd \ - php7-iconv \ - php7-intl \ - php7-json \ - php7-mbstring \ - php7-openssl \ - php7-phar \ - php7-session \ - php7-xml \ - php7-zlib \ - s6 - -COPY nginx.conf /etc/nginx/nginx.conf -COPY php-fpm.conf /etc/php7/php-fpm.conf -COPY services.d /etc/services.d - -RUN curl -sS https://getcomposer.org/installer | php7 -- --install-dir=/usr/local/bin --filename=composer \ - && rm -rf /etc/php7/php-fpm.d/www.conf \ - && sed -i 's/post_max_size.*/post_max_size = 10M/' /etc/php7/php.ini \ - && sed -i 's/upload_max_filesize.*/upload_max_filesize = 10M/' /etc/php7/php.ini - - -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 \ - && rm -rf ~/.composer \ - && chown -R nginx:nginx . - -VOLUME /var/www/shaarli/data - -EXPOSE 80 - -ENTRYPOINT ["/bin/s6-svscan", "/etc/services.d"] -CMD [] diff --git a/docker/alpine/IMAGE.md b/docker/alpine/IMAGE.md deleted file mode 100644 index a895225..0000000 --- a/docker/alpine/IMAGE.md +++ /dev/null @@ -1,10 +0,0 @@ -## Alpine images -- [Alpine Linux](https://www.alpinelinux.org/) -- [PHP-FPM](http://php-fpm.org/) -- [Nginx](http://nginx.org/) - -### `shaarli/shaarli:latest` -- [Shaarli](https://github.com/shaarli/Shaarli), `latest` branch - -### `shaarli/shaarli:master` -- [Shaarli](https://github.com/shaarli/Shaarli), `master` branch diff --git a/docker/debian/Dockerfile.stable b/docker/debian/Dockerfile.stable deleted file mode 100644 index fc9588b..0000000 --- a/docker/debian/Dockerfile.stable +++ /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/debian/IMAGE.md b/docker/debian/IMAGE.md deleted file mode 100644 index d85b1d7..0000000 --- a/docker/debian/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/debian/nginx.conf b/docker/debian/nginx.conf deleted file mode 100644 index e8754d9..0000000 --- a/docker/debian/nginx.conf +++ /dev/null @@ -1,72 +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 / { - # 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/debian/supervised.conf b/docker/debian/supervised.conf deleted file mode 100644 index 5acd979..0000000 --- a/docker/debian/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/shaarli_version.php b/shaarli_version.php index 6bd0f82..a56e861 100644 --- a/shaarli_version.php +++ b/shaarli_version.php @@ -1 +1 @@ - + diff --git a/docker/test/alpine36/Dockerfile b/tests/docker/alpine36/Dockerfile similarity index 100% rename from docker/test/alpine36/Dockerfile rename to tests/docker/alpine36/Dockerfile diff --git a/docker/test/debian8/Dockerfile b/tests/docker/debian8/Dockerfile similarity index 100% rename from docker/test/debian8/Dockerfile rename to tests/docker/debian8/Dockerfile diff --git a/docker/test/debian9/Dockerfile b/tests/docker/debian9/Dockerfile similarity index 100% rename from docker/test/debian9/Dockerfile rename to tests/docker/debian9/Dockerfile diff --git a/docker/test/ubuntu16/Dockerfile b/tests/docker/ubuntu16/Dockerfile similarity index 100% rename from docker/test/ubuntu16/Dockerfile rename to tests/docker/ubuntu16/Dockerfile