]> git.immae.eu Git - github/shaarli/Shaarli.git/commitdiff
Merge pull request #1156 from virtualtam/v0.8-dockerfile
authorVirtualTam <virtualtam+github@flibidi.net>
Wed, 20 Jun 2018 14:29:06 +0000 (16:29 +0200)
committerGitHub <noreply@github.com>
Wed, 20 Jun 2018 14:29:06 +0000 (16:29 +0200)
v0.8 - Build the Docker image from the local sources

19 files changed:
.docker/.htaccess [moved from docker/.htaccess with 100% similarity]
.docker/nginx.conf [moved from docker/development/nginx.conf with 85% similarity]
.docker/supervised.conf [moved from docker/development/supervised.conf with 100% similarity]
.dockerignore [new file with mode: 0644]
.gitattributes
.travis.yml
CHANGELOG.md
Dockerfile [new file with mode: 0644]
Makefile
docker/development/Dockerfile [deleted file]
docker/development/IMAGE.md [deleted file]
docker/production/Dockerfile [deleted file]
docker/production/IMAGE.md [deleted file]
docker/production/nginx.conf [deleted file]
docker/production/stable/Dockerfile [deleted file]
docker/production/stable/IMAGE.md [deleted file]
docker/production/stable/nginx.conf [deleted file]
docker/production/stable/supervised.conf [deleted file]
docker/production/supervised.conf [deleted file]

similarity index 100%
rename from docker/.htaccess
rename to .docker/.htaccess
similarity index 85%
rename from docker/development/nginx.conf
rename to .docker/nginx.conf
index ac0c6c61ce165976b7572bb96eb8ba90b5f4d2a8..e8754d9b478f85cbeb033756d2114759f1809d37 100644 (file)
@@ -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/.dockerignore b/.dockerignore
new file mode 100644 (file)
index 0000000..9a18e08
--- /dev/null
@@ -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
index d753b1db076ab9fce664b20d15c361a1b5ecefe6..a3a22a1561fcd2e8731ec26673c4ab11ce22bfb1 100644 (file)
@@ -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
index 6ff1b20f564e130e345821eaefe75a0fb829d55f..e59c8f6a4b84ae50586b3eadc717fe96d0549ab8 100644 (file)
@@ -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
index 84dc18cc63154390bcdd832b49bd1755165fa12f..3f5bafd1234ee0357c24bc461678f2fa974e6450 100644 (file)
@@ -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 (file)
index 0000000..e806703
--- /dev/null
@@ -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"]
index 60aec9a08b6049328ee031dd7e19fbaeafc8664e..47f3530f2048976f1c7701a553c33095e6c13e2a 100644 (file)
--- 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 (file)
index d9ef8da..0000000
+++ /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 "<?php phpinfo(); ?>" > 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 (file)
index e2ff0f0..0000000
+++ /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 (file)
index d050911..0000000
+++ /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 (file)
index 6f827b3..0000000
+++ /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 (file)
index 5ffa02d..0000000
+++ /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 (file)
index fc9588b..0000000
+++ /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 (file)
index d85b1d7..0000000
+++ /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 (file)
index 5ffa02d..0000000
+++ /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 (file)
index 5acd979..0000000
+++ /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 (file)
index 5acd979..0000000
+++ /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