]> git.immae.eu Git - github/shaarli/Shaarli.git/commitdiff
docker: switch to Alpine Linux for the master image
authorVirtualTam <virtualtam@flibidi.net>
Sun, 9 Apr 2017 12:50:13 +0000 (14:50 +0200)
committerVirtualTam <virtualtam@flibidi.net>
Tue, 3 Oct 2017 17:47:01 +0000 (19:47 +0200)
Relates to https://github.com/shaarli/Shaarli/issues/843

Changed:
- switch base image from Debian:Jessie to Alpine:3.6
- switch to PHP 7.1
- switch from supervisord to s6 to manage services

See:
- https://alpinelinux.org/
- https://wiki.alpinelinux.org/wiki/Nginx_with_PHP
- http://www.skarnet.org/software/s6/
  - http://www.skarnet.org/software/s6/s6-svscan.html
  - http://www.skarnet.org/software/s6/s6-svc.html
  - http://www.skarnet.org/software/s6/s6-svstat.html

Signed-off-by: VirtualTam <virtualtam@flibidi.net>
14 files changed:
Makefile
docker/alpine/Dockerfile.master [new file with mode: 0644]
docker/alpine/IMAGE.md [moved from docker/production/IMAGE.md with 100% similarity]
docker/alpine/nginx.conf [moved from docker/production/stable/nginx.conf with 94% similarity]
docker/alpine/php-fpm.conf [new file with mode: 0644]
docker/alpine/services.d/.s6-svscan/finish [new file with mode: 0755]
docker/alpine/services.d/nginx/run [new file with mode: 0755]
docker/alpine/services.d/php-fpm/run [new file with mode: 0755]
docker/production/Dockerfile [deleted file]
docker/production/supervised.conf [deleted file]
docker/stable/Dockerfile [moved from docker/production/stable/Dockerfile with 100% similarity]
docker/stable/IMAGE.md [moved from docker/production/stable/IMAGE.md with 100% similarity]
docker/stable/nginx.conf [moved from docker/production/nginx.conf with 100% similarity]
docker/stable/supervised.conf [moved from docker/production/stable/supervised.conf with 100% similarity]

index a3696ec987886657dfd2ecca1345575c4928c38c..656c27b03ab3664589123369ba770c31f44604de 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -115,7 +115,7 @@ check_permissions:
        @echo "----------------------"
        @echo "Check file permissions"
        @echo "----------------------"
-       @for file in `git ls-files`; do \
+       @for file in `git ls-files | grep -v docker`; do \
                if [ -x $$file ]; then \
                        errors=true; \
                        echo "$${file} is executable"; \
diff --git a/docker/alpine/Dockerfile.master b/docker/alpine/Dockerfile.master
new file mode 100644 (file)
index 0000000..58f7c6e
--- /dev/null
@@ -0,0 +1,47 @@
+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 []
similarity index 94%
rename from docker/production/stable/nginx.conf
rename to docker/alpine/nginx.conf
index e8754d9b478f85cbeb033756d2114759f1809d37..07fba33fec11bcbf90741c086586550a0b86c57c 100644 (file)
@@ -1,6 +1,7 @@
-user www-data www-data;
+user nginx nginx;
 daemon off;
 worker_processes 4;
+pid /var/run/nginx.pid;
 
 events {
     worker_connections  768;
@@ -59,7 +60,7 @@ http {
             fastcgi_split_path_info ^(.+\.php)(/.+)$;
 
             # filter and proxy PHP requests to PHP-FPM
-            fastcgi_pass   unix:/var/run/php5-fpm.sock;
+            fastcgi_pass   unix:/var/run/php-fpm.sock;
             fastcgi_index  index.php;
             include        fastcgi.conf;
         }
diff --git a/docker/alpine/php-fpm.conf b/docker/alpine/php-fpm.conf
new file mode 100644 (file)
index 0000000..0843c16
--- /dev/null
@@ -0,0 +1,16 @@
+[global]
+daemonize = no
+
+[www]
+user = nginx
+group = nginx
+listen.owner = nginx
+listen.group = nginx
+catch_workers_output = yes
+listen = /var/run/php-fpm.sock
+pm = dynamic
+pm.max_children = 20
+pm.start_servers = 1
+pm.min_spare_servers = 1
+pm.max_spare_servers = 3
+pm.max_requests = 2048
diff --git a/docker/alpine/services.d/.s6-svscan/finish b/docker/alpine/services.d/.s6-svscan/finish
new file mode 100755 (executable)
index 0000000..1dadeea
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh
+/bin/true
diff --git a/docker/alpine/services.d/nginx/run b/docker/alpine/services.d/nginx/run
new file mode 100755 (executable)
index 0000000..21e7b0d
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/execlineb -P
+nginx
diff --git a/docker/alpine/services.d/php-fpm/run b/docker/alpine/services.d/php-fpm/run
new file mode 100755 (executable)
index 0000000..21dd010
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/execlineb -P
+php-fpm7 -F
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/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