]> git.immae.eu Git - github/shaarli/Shaarli.git/commitdiff
docker: build the image from the local sources
authorVirtualTam <virtualtam@flibidi.net>
Sat, 16 Jun 2018 21:08:26 +0000 (23:08 +0200)
committerVirtualTam <virtualtam@flibidi.net>
Sat, 16 Jun 2018 21:08:26 +0000 (23:08 +0200)
Relates to https://github.com/shaarli/Shaarli/issues/1153

Signed-off-by: VirtualTam <virtualtam@flibidi.net>
.docker/.htaccess [new file with mode: 0644]
.docker/nginx.conf [new file with mode: 0644]
.docker/supervised.conf [new file with mode: 0644]
.dockerignore [new file with mode: 0644]
.gitattributes
CHANGELOG.md
Dockerfile [new file with mode: 0644]

diff --git a/.docker/.htaccess b/.docker/.htaccess
new file mode 100644 (file)
index 0000000..f601c1e
--- /dev/null
@@ -0,0 +1,13 @@
+<IfModule version_module>
+  <IfVersion >= 2.4>
+     Require all denied
+  </IfVersion>
+  <IfVersion < 2.4>
+     Allow from none
+     Deny from all
+  </IfVersion>
+</IfModule>
+
+<IfModule !version_module>
+    Require all denied
+</IfModule>
diff --git a/.docker/nginx.conf b/.docker/nginx.conf
new file mode 100644 (file)
index 0000000..e8754d9
--- /dev/null
@@ -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 (file)
index 0000000..5acd979
--- /dev/null
@@ -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 (file)
index 0000000..c92a2a1
--- /dev/null
@@ -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
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 84dc18cc63154390bcdd832b49bd1755165fa12f..908410184ce4cf84eb78326d8c8cf9fe7fc85e28 100644 (file)
@@ -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 (file)
index 0000000..5e03814
--- /dev/null
@@ -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"]