From 1168abb484ce8fd6a524a4849d9d4dd3e0589b20 Mon Sep 17 00:00:00 2001 From: VirtualTam Date: Sat, 16 Jun 2018 23:54:10 +0200 Subject: docker: move testing resources to tests/docker Relates to https://github.com/shaarli/Shaarli/issues/1153 Signed-off-by: VirtualTam --- docker/test/alpine36/Dockerfile | 34 ---------------------------------- docker/test/debian8/Dockerfile | 35 ----------------------------------- docker/test/debian9/Dockerfile | 36 ------------------------------------ docker/test/ubuntu16/Dockerfile | 36 ------------------------------------ tests/docker/alpine36/Dockerfile | 34 ++++++++++++++++++++++++++++++++++ tests/docker/debian8/Dockerfile | 35 +++++++++++++++++++++++++++++++++++ tests/docker/debian9/Dockerfile | 36 ++++++++++++++++++++++++++++++++++++ tests/docker/ubuntu16/Dockerfile | 36 ++++++++++++++++++++++++++++++++++++ 8 files changed, 141 insertions(+), 141 deletions(-) delete mode 100644 docker/test/alpine36/Dockerfile delete mode 100644 docker/test/debian8/Dockerfile delete mode 100644 docker/test/debian9/Dockerfile delete mode 100644 docker/test/ubuntu16/Dockerfile create mode 100644 tests/docker/alpine36/Dockerfile create mode 100644 tests/docker/debian8/Dockerfile create mode 100644 tests/docker/debian9/Dockerfile create mode 100644 tests/docker/ubuntu16/Dockerfile diff --git a/docker/test/alpine36/Dockerfile b/docker/test/alpine36/Dockerfile deleted file mode 100644 index fa84f6e2..00000000 --- a/docker/test/alpine36/Dockerfile +++ /dev/null @@ -1,34 +0,0 @@ -FROM alpine:3.6 -MAINTAINER Shaarli Community - -RUN apk --update --no-cache add \ - ca-certificates \ - curl \ - make \ - php7 \ - php7-ctype \ - php7-curl \ - php7-dom \ - php7-gd \ - php7-iconv \ - php7-intl \ - php7-json \ - php7-mbstring \ - php7-openssl \ - php7-phar \ - php7-session \ - php7-simplexml \ - php7-tokenizer \ - php7-xdebug \ - php7-xml \ - php7-zlib \ - rsync - -RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer - -RUN mkdir /shaarli -WORKDIR /shaarli -VOLUME /shaarli - -ENTRYPOINT ["make"] -CMD [] diff --git a/docker/test/debian8/Dockerfile b/docker/test/debian8/Dockerfile deleted file mode 100644 index eaa34e9b..00000000 --- a/docker/test/debian8/Dockerfile +++ /dev/null @@ -1,35 +0,0 @@ -FROM debian:jessie -MAINTAINER Shaarli Community - -ENV TERM dumb -ENV DEBIAN_FRONTEND noninteractive -ENV LANG en_US.UTF-8 -ENV LANGUAGE en_US:en - -RUN apt-get update \ - && apt-get install --no-install-recommends -y \ - ca-certificates \ - curl \ - locales \ - make \ - php5 \ - php5-curl \ - php5-gd \ - php5-intl \ - php5-xdebug \ - rsync \ - && apt-get clean - -RUN locale-gen en_US.UTF-8 \ - && locale-gen de_DE.UTF-8 \ - && locale-gen fr_FR.UTF-8 - -ADD https://getcomposer.org/composer.phar /usr/local/bin/composer -RUN chmod 755 /usr/local/bin/composer - -RUN mkdir /shaarli -WORKDIR /shaarli -VOLUME /shaarli - -ENTRYPOINT ["make"] -CMD [] diff --git a/docker/test/debian9/Dockerfile b/docker/test/debian9/Dockerfile deleted file mode 100644 index 3ab4b93d..00000000 --- a/docker/test/debian9/Dockerfile +++ /dev/null @@ -1,36 +0,0 @@ -FROM debian:stretch -MAINTAINER Shaarli Community - -ENV TERM dumb -ENV DEBIAN_FRONTEND noninteractive -ENV LANG en_US.UTF-8 -ENV LANGUAGE en_US:en - -RUN apt-get update \ - && apt-get install --no-install-recommends -y \ - ca-certificates \ - curl \ - locales \ - make \ - php7.0 \ - php7.0-curl \ - php7.0-gd \ - php7.0-intl \ - php7.0-xml \ - php-xdebug \ - rsync \ - && apt-get clean - -RUN locale-gen en_US.UTF-8 \ - && locale-gen de_DE.UTF-8 \ - && locale-gen fr_FR.UTF-8 - -ADD https://getcomposer.org/composer.phar /usr/local/bin/composer -RUN chmod 755 /usr/local/bin/composer - -RUN mkdir /shaarli -WORKDIR /shaarli -VOLUME /shaarli - -ENTRYPOINT ["make"] -CMD [] diff --git a/docker/test/ubuntu16/Dockerfile b/docker/test/ubuntu16/Dockerfile deleted file mode 100644 index e53ed9e3..00000000 --- a/docker/test/ubuntu16/Dockerfile +++ /dev/null @@ -1,36 +0,0 @@ -FROM ubuntu:16.04 -MAINTAINER Shaarli Community - -ENV TERM dumb -ENV DEBIAN_FRONTEND noninteractive -ENV LANG en_US.UTF-8 -ENV LANGUAGE en_US:en - -RUN apt-get update \ - && apt-get install --no-install-recommends -y \ - ca-certificates \ - curl \ - language-pack-de \ - language-pack-en \ - language-pack-fr \ - locales \ - make \ - php7.0 \ - php7.0-curl \ - php7.0-gd \ - php7.0-intl \ - php7.0-xml \ - php-xdebug \ - rsync \ - && apt-get clean - -ADD https://getcomposer.org/composer.phar /usr/local/bin/composer -RUN chmod 755 /usr/local/bin/composer - -RUN useradd -m dev \ - && mkdir /shaarli -USER dev -WORKDIR /shaarli - -ENTRYPOINT ["make"] -CMD [] diff --git a/tests/docker/alpine36/Dockerfile b/tests/docker/alpine36/Dockerfile new file mode 100644 index 00000000..fa84f6e2 --- /dev/null +++ b/tests/docker/alpine36/Dockerfile @@ -0,0 +1,34 @@ +FROM alpine:3.6 +MAINTAINER Shaarli Community + +RUN apk --update --no-cache add \ + ca-certificates \ + curl \ + make \ + php7 \ + php7-ctype \ + php7-curl \ + php7-dom \ + php7-gd \ + php7-iconv \ + php7-intl \ + php7-json \ + php7-mbstring \ + php7-openssl \ + php7-phar \ + php7-session \ + php7-simplexml \ + php7-tokenizer \ + php7-xdebug \ + php7-xml \ + php7-zlib \ + rsync + +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer + +RUN mkdir /shaarli +WORKDIR /shaarli +VOLUME /shaarli + +ENTRYPOINT ["make"] +CMD [] diff --git a/tests/docker/debian8/Dockerfile b/tests/docker/debian8/Dockerfile new file mode 100644 index 00000000..eaa34e9b --- /dev/null +++ b/tests/docker/debian8/Dockerfile @@ -0,0 +1,35 @@ +FROM debian:jessie +MAINTAINER Shaarli Community + +ENV TERM dumb +ENV DEBIAN_FRONTEND noninteractive +ENV LANG en_US.UTF-8 +ENV LANGUAGE en_US:en + +RUN apt-get update \ + && apt-get install --no-install-recommends -y \ + ca-certificates \ + curl \ + locales \ + make \ + php5 \ + php5-curl \ + php5-gd \ + php5-intl \ + php5-xdebug \ + rsync \ + && apt-get clean + +RUN locale-gen en_US.UTF-8 \ + && locale-gen de_DE.UTF-8 \ + && locale-gen fr_FR.UTF-8 + +ADD https://getcomposer.org/composer.phar /usr/local/bin/composer +RUN chmod 755 /usr/local/bin/composer + +RUN mkdir /shaarli +WORKDIR /shaarli +VOLUME /shaarli + +ENTRYPOINT ["make"] +CMD [] diff --git a/tests/docker/debian9/Dockerfile b/tests/docker/debian9/Dockerfile new file mode 100644 index 00000000..3ab4b93d --- /dev/null +++ b/tests/docker/debian9/Dockerfile @@ -0,0 +1,36 @@ +FROM debian:stretch +MAINTAINER Shaarli Community + +ENV TERM dumb +ENV DEBIAN_FRONTEND noninteractive +ENV LANG en_US.UTF-8 +ENV LANGUAGE en_US:en + +RUN apt-get update \ + && apt-get install --no-install-recommends -y \ + ca-certificates \ + curl \ + locales \ + make \ + php7.0 \ + php7.0-curl \ + php7.0-gd \ + php7.0-intl \ + php7.0-xml \ + php-xdebug \ + rsync \ + && apt-get clean + +RUN locale-gen en_US.UTF-8 \ + && locale-gen de_DE.UTF-8 \ + && locale-gen fr_FR.UTF-8 + +ADD https://getcomposer.org/composer.phar /usr/local/bin/composer +RUN chmod 755 /usr/local/bin/composer + +RUN mkdir /shaarli +WORKDIR /shaarli +VOLUME /shaarli + +ENTRYPOINT ["make"] +CMD [] diff --git a/tests/docker/ubuntu16/Dockerfile b/tests/docker/ubuntu16/Dockerfile new file mode 100644 index 00000000..e53ed9e3 --- /dev/null +++ b/tests/docker/ubuntu16/Dockerfile @@ -0,0 +1,36 @@ +FROM ubuntu:16.04 +MAINTAINER Shaarli Community + +ENV TERM dumb +ENV DEBIAN_FRONTEND noninteractive +ENV LANG en_US.UTF-8 +ENV LANGUAGE en_US:en + +RUN apt-get update \ + && apt-get install --no-install-recommends -y \ + ca-certificates \ + curl \ + language-pack-de \ + language-pack-en \ + language-pack-fr \ + locales \ + make \ + php7.0 \ + php7.0-curl \ + php7.0-gd \ + php7.0-intl \ + php7.0-xml \ + php-xdebug \ + rsync \ + && apt-get clean + +ADD https://getcomposer.org/composer.phar /usr/local/bin/composer +RUN chmod 755 /usr/local/bin/composer + +RUN useradd -m dev \ + && mkdir /shaarli +USER dev +WORKDIR /shaarli + +ENTRYPOINT ["make"] +CMD [] -- cgit v1.2.3 From 7cf436cea4d05fe667c479be8b909c55c3f1da40 Mon Sep 17 00:00:00 2001 From: VirtualTam Date: Sat, 16 Jun 2018 23:55:41 +0200 Subject: docker: remove 'stable' resources Relates to https://github.com/shaarli/Shaarli/issues/1153 Signed-off-by: VirtualTam --- docker/debian/Dockerfile.stable | 37 --------------------- docker/debian/IMAGE.md | 5 --- docker/debian/nginx.conf | 72 ----------------------------------------- docker/debian/supervised.conf | 13 -------- 4 files changed, 127 deletions(-) delete mode 100644 docker/debian/Dockerfile.stable delete mode 100644 docker/debian/IMAGE.md delete mode 100644 docker/debian/nginx.conf delete mode 100644 docker/debian/supervised.conf diff --git a/docker/debian/Dockerfile.stable b/docker/debian/Dockerfile.stable deleted file mode 100644 index fc9588b0..00000000 --- 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 d85b1d7a..00000000 --- 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 e8754d9b..00000000 --- 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 5acd9795..00000000 --- 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 -- cgit v1.2.3 From 2a3fe990dd0730fce9465bbef6ad1a01054f775d Mon Sep 17 00:00:00 2001 From: VirtualTam Date: Sun, 17 Jun 2018 01:02:50 +0200 Subject: docker: build the images from the local sources Relates to https://github.com/shaarli/Shaarli/issues/1153 Signed-off-by: VirtualTam --- .docker/.htaccess | 13 ++++++ .docker/nginx.conf | 73 ++++++++++++++++++++++++++++++ .docker/php-fpm.conf | 16 +++++++ .docker/services.d/.s6-svscan/finish | 2 + .docker/services.d/nginx/run | 2 + .docker/services.d/php-fpm/run | 2 + .dockerignore | 51 +++++++++++++++++++++ .gitattributes | 4 +- Dockerfile | 70 ++++++++++++++++++++++++++++ Dockerfile.armhf | 49 ++++++++++++++++++++ docker/.htaccess | 13 ------ docker/alpine/Dockerfile.armhf.latest | 49 -------------------- docker/alpine/Dockerfile.armhf.master | 49 -------------------- docker/alpine/Dockerfile.latest | 54 ---------------------- docker/alpine/Dockerfile.master | 63 -------------------------- docker/alpine/IMAGE.md | 10 ---- docker/alpine/nginx.conf | 73 ------------------------------ docker/alpine/php-fpm.conf | 16 ------- docker/alpine/services.d/.s6-svscan/finish | 2 - docker/alpine/services.d/nginx/run | 2 - docker/alpine/services.d/php-fpm/run | 2 - 21 files changed, 281 insertions(+), 334 deletions(-) create mode 100644 .docker/.htaccess create mode 100644 .docker/nginx.conf create mode 100644 .docker/php-fpm.conf create mode 100755 .docker/services.d/.s6-svscan/finish create mode 100755 .docker/services.d/nginx/run create mode 100755 .docker/services.d/php-fpm/run create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 Dockerfile.armhf delete mode 100644 docker/.htaccess delete mode 100644 docker/alpine/Dockerfile.armhf.latest delete mode 100644 docker/alpine/Dockerfile.armhf.master delete mode 100644 docker/alpine/Dockerfile.latest delete mode 100644 docker/alpine/Dockerfile.master delete mode 100644 docker/alpine/IMAGE.md delete mode 100644 docker/alpine/nginx.conf delete mode 100644 docker/alpine/php-fpm.conf delete mode 100755 docker/alpine/services.d/.s6-svscan/finish delete mode 100755 docker/alpine/services.d/nginx/run delete mode 100755 docker/alpine/services.d/php-fpm/run diff --git a/.docker/.htaccess b/.docker/.htaccess new file mode 100644 index 00000000..f601c1ee --- /dev/null +++ b/.docker/.htaccess @@ -0,0 +1,13 @@ + + = 2.4> + Require all denied + + + Allow from none + Deny from all + + + + + Require all denied + diff --git a/.docker/nginx.conf b/.docker/nginx.conf new file mode 100644 index 00000000..07fba33f --- /dev/null +++ b/.docker/nginx.conf @@ -0,0 +1,73 @@ +user nginx nginx; +daemon off; +worker_processes 4; +pid /var/run/nginx.pid; + +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/php-fpm.sock; + fastcgi_index index.php; + include fastcgi.conf; + } + + location ~ \.php$ { + # deny access to all other PHP scripts + deny all; + } + } +} diff --git a/.docker/php-fpm.conf b/.docker/php-fpm.conf new file mode 100644 index 00000000..0843c164 --- /dev/null +++ b/.docker/php-fpm.conf @@ -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/services.d/.s6-svscan/finish b/.docker/services.d/.s6-svscan/finish new file mode 100755 index 00000000..1dadeeaf --- /dev/null +++ b/.docker/services.d/.s6-svscan/finish @@ -0,0 +1,2 @@ +#!/bin/sh +/bin/true diff --git a/.docker/services.d/nginx/run b/.docker/services.d/nginx/run new file mode 100755 index 00000000..21e7b0d6 --- /dev/null +++ b/.docker/services.d/nginx/run @@ -0,0 +1,2 @@ +#!/bin/execlineb -P +nginx diff --git a/.docker/services.d/php-fpm/run b/.docker/services.d/php-fpm/run new file mode 100755 index 00000000..21dd0107 --- /dev/null +++ b/.docker/services.d/php-fpm/run @@ -0,0 +1,2 @@ +#!/bin/execlineb -P +php-fpm7 -F diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..a0d28dc6 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,51 @@ +# 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 + +# 3rd party themes +tpl/* +!tpl/default +!tpl/vintage + +# Front end +node_modules +tpl/default/js +tpl/default/css +tpl/default/fonts +tpl/default/img +tpl/vintage/js +tpl/vintage/css +tpl/vintage/img diff --git a/.gitattributes b/.gitattributes index 6b6ffbd5..9d22f11b 100644 --- a/.gitattributes +++ b/.gitattributes @@ -33,7 +33,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 node_modules/ export-ignore diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..4cda6f31 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,70 @@ +# 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: +# - Frontend dependencies +FROM node:9.9-alpine as node +COPY --from=composer /app/shaarli shaarli +RUN cd shaarli \ + && yarn install \ + && yarn run build \ + && rm -rf node_modules + +# Stage 4: +# - 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=node /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/Dockerfile.armhf b/Dockerfile.armhf new file mode 100644 index 00000000..5dcc34aa --- /dev/null +++ b/Dockerfile.armhf @@ -0,0 +1,49 @@ +FROM lsiobase/alpine.armhf:3.6 +LABEL 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 .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 \ + && 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 . \ + && 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/.htaccess b/docker/.htaccess deleted file mode 100644 index f601c1ee..00000000 --- a/docker/.htaccess +++ /dev/null @@ -1,13 +0,0 @@ - - = 2.4> - Require all denied - - - Allow from none - Deny from all - - - - - Require all denied - diff --git a/docker/alpine/Dockerfile.armhf.latest b/docker/alpine/Dockerfile.armhf.latest deleted file mode 100644 index 824a1926..00000000 --- a/docker/alpine/Dockerfile.armhf.latest +++ /dev/null @@ -1,49 +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/latest.tar.gz | tar xzf - \ - && mv Shaarli-latest shaarli \ - && cd shaarli \ - && composer --prefer-dist --no-dev install \ - && rm -rf ~/.composer \ - && 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.master b/docker/alpine/Dockerfile.armhf.master deleted file mode 100644 index 6c89adc3..00000000 --- a/docker/alpine/Dockerfile.armhf.master +++ /dev/null @@ -1,49 +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 . \ - && 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.latest b/docker/alpine/Dockerfile.latest deleted file mode 100644 index 755d8751..00000000 --- a/docker/alpine/Dockerfile.latest +++ /dev/null @@ -1,54 +0,0 @@ -# Stage 1: -# - Get Shaarli sources -# - Resolve PHP dependencies with Composer -FROM composer:latest as composer -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 - -# Stage 2: -# - 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 nginx.conf /etc/nginx/nginx.conf -COPY php-fpm.conf /etc/php7/php-fpm.conf -COPY 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.master b/docker/alpine/Dockerfile.master deleted file mode 100644 index 7bbe1fb7..00000000 --- a/docker/alpine/Dockerfile.master +++ /dev/null @@ -1,63 +0,0 @@ -# Stage 1: -# - Get Shaarli sources -# - Resolve PHP dependencies with Composer -FROM composer:latest as composer -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 - -# Stage 2: -# - Frontend dependencies -FROM node:9.9-alpine as node -COPY --from=composer /app/shaarli shaarli -RUN cd shaarli \ - && yarn install \ - && yarn run build \ - && rm -rf node_modules - -# 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 nginx.conf /etc/nginx/nginx.conf -COPY php-fpm.conf /etc/php7/php-fpm.conf -COPY 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=node /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/IMAGE.md b/docker/alpine/IMAGE.md deleted file mode 100644 index a8952257..00000000 --- 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/alpine/nginx.conf b/docker/alpine/nginx.conf deleted file mode 100644 index 07fba33f..00000000 --- a/docker/alpine/nginx.conf +++ /dev/null @@ -1,73 +0,0 @@ -user nginx nginx; -daemon off; -worker_processes 4; -pid /var/run/nginx.pid; - -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/php-fpm.sock; - fastcgi_index index.php; - include fastcgi.conf; - } - - location ~ \.php$ { - # deny access to all other PHP scripts - deny all; - } - } -} diff --git a/docker/alpine/php-fpm.conf b/docker/alpine/php-fpm.conf deleted file mode 100644 index 0843c164..00000000 --- a/docker/alpine/php-fpm.conf +++ /dev/null @@ -1,16 +0,0 @@ -[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 deleted file mode 100755 index 1dadeeaf..00000000 --- a/docker/alpine/services.d/.s6-svscan/finish +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -/bin/true diff --git a/docker/alpine/services.d/nginx/run b/docker/alpine/services.d/nginx/run deleted file mode 100755 index 21e7b0d6..00000000 --- a/docker/alpine/services.d/nginx/run +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/execlineb -P -nginx diff --git a/docker/alpine/services.d/php-fpm/run b/docker/alpine/services.d/php-fpm/run deleted file mode 100755 index 21dd0107..00000000 --- a/docker/alpine/services.d/php-fpm/run +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/execlineb -P -php-fpm7 -F -- cgit v1.2.3 From c064d3179e0396983bdf8dee545388e4142ed842 Mon Sep 17 00:00:00 2001 From: VirtualTam Date: Sun, 17 Jun 2018 13:45:39 +0200 Subject: docker: update image and usage documentation Relates to https://github.com/shaarli/Shaarli/issues/1153 Signed-off-by: VirtualTam --- doc/md/Unit-tests-Docker.md | 6 +++--- doc/md/docker/shaarli-images.md | 14 ++++++++++---- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/doc/md/Unit-tests-Docker.md b/doc/md/Unit-tests-Docker.md index c2de7cc7..59bd5b45 100644 --- a/doc/md/Unit-tests-Docker.md +++ b/doc/md/Unit-tests-Docker.md @@ -8,7 +8,7 @@ Read first: ### Docker test images -Test Dockerfiles are located under `docker/tests//Dockerfile`, +Test Dockerfiles are located under `tests/docker//Dockerfile`, and can be used to build Docker images to run Shaarli test suites under common Linux environments. @@ -27,7 +27,7 @@ What's behind the curtains: - test PHP dependencies (OS packages) - Composer - the local workspace is mapped to the container's `/shaarli/` directory, -- the files are rsync'd to so tests are run using a standard Linux user account +- the files are rsync'd so tests are run using a standard Linux user account (running tests as `root` would bypass permission checks and may hide issues) - the tests are run inside the container. @@ -36,7 +36,7 @@ What's behind the curtains: ```bash # build the Debian 9 Docker image $ cd /path/to/shaarli -$ cd docker/test/debian9 +$ cd tests/docker/debian9 $ docker build -t shaarli-test:debian9 . ``` diff --git a/doc/md/docker/shaarli-images.md b/doc/md/docker/shaarli-images.md index 12f7b5d1..e6fbff64 100644 --- a/doc/md/docker/shaarli-images.md +++ b/doc/md/docker/shaarli-images.md @@ -8,9 +8,9 @@ The images can be found in the [`shaarli/shaarli`](https://hub.docker.com/r/shaa repository. ### Available image tags -- `latest`: latest branch (tarball release) -- `master`: master branch (tarball release) -- `stable`: stable branch (tarball release) +- `latest`: latest branch +- `master`: master branch +- `stable`: stable branch The `latest` and `master` images rely on: @@ -24,7 +24,13 @@ The `stable` image relies on: - [PHP5-FPM](http://php-fpm.org/) - [Nginx](http://nginx.org/) -Additional [Dockerfiles](https://github.com/shaarli/Shaarli/tree/master/docker) are provided for the `arm32v7` platform, relying on [Linuxserver.io Alpine armhf images](https://hub.docker.com/r/lsiobase/alpine.armhf/). These images must be built using [`docker build`](https://docs.docker.com/engine/reference/commandline/build/) on an `arm32v7` machine or using an emulator such as [qemu](https://resin.io/blog/building-arm-containers-on-any-x86-machine-even-dockerhub/). +Additional Dockerfiles are provided for the `arm32v7` platform, relying on +[Linuxserver.io Alpine armhf +images](https://hub.docker.com/r/lsiobase/alpine.armhf/). These images must be +built using [`docker +build`](https://docs.docker.com/engine/reference/commandline/build/) on an +`arm32v7` machine or using an emulator such as +[qemu](https://resin.io/blog/building-arm-containers-on-any-x86-machine-even-dockerhub/). ### Download from DockerHub ```bash -- cgit v1.2.3