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

23 files changed:
.docker/.htaccess [moved from docker/.htaccess with 100% similarity]
.docker/nginx.conf [moved from docker/alpine/nginx.conf with 100% similarity]
.docker/php-fpm.conf [moved from docker/alpine/php-fpm.conf with 100% similarity]
.docker/services.d/.s6-svscan/finish [moved from docker/alpine/services.d/.s6-svscan/finish with 100% similarity]
.docker/services.d/nginx/run [moved from docker/alpine/services.d/nginx/run with 100% similarity]
.docker/services.d/php-fpm/run [moved from docker/alpine/services.d/php-fpm/run with 100% similarity]
.dockerignore [new file with mode: 0644]
.gitattributes
Dockerfile [moved from docker/alpine/Dockerfile.master with 75% similarity]
Dockerfile.armhf [moved from docker/alpine/Dockerfile.armhf.master with 87% similarity]
doc/md/Unit-tests-Docker.md
doc/md/docker/shaarli-images.md
docker/alpine/Dockerfile.armhf.latest [deleted file]
docker/alpine/Dockerfile.latest [deleted file]
docker/alpine/IMAGE.md [deleted file]
docker/debian/Dockerfile.stable [deleted file]
docker/debian/IMAGE.md [deleted file]
docker/debian/nginx.conf [deleted file]
docker/debian/supervised.conf [deleted file]
tests/docker/alpine36/Dockerfile [moved from docker/test/alpine36/Dockerfile with 100% similarity]
tests/docker/debian8/Dockerfile [moved from docker/test/debian8/Dockerfile with 100% similarity]
tests/docker/debian9/Dockerfile [moved from docker/test/debian9/Dockerfile with 100% similarity]
tests/docker/ubuntu16/Dockerfile [moved from docker/test/ubuntu16/Dockerfile with 100% similarity]

similarity index 100%
rename from docker/.htaccess
rename to .docker/.htaccess
similarity index 100%
rename from docker/alpine/nginx.conf
rename to .docker/nginx.conf
diff --git a/.dockerignore b/.dockerignore
new file mode 100644 (file)
index 0000000..a0d28dc
--- /dev/null
@@ -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
index 6b6ffbd5a484e63ed22c3fa62d0e01eabb055c87..9d22f11b282811b6007920e44813694a0946efd4 100644 (file)
@@ -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
similarity index 75%
rename from docker/alpine/Dockerfile.master
rename to Dockerfile
index 7bbe1fb77f66e46afdc80906ba2c0f6fe9a5a08b..4cda6f31316183493b65b33bb6c6dab26f680465 100644 (file)
@@ -1,13 +1,20 @@
 # Stage 1:
-# - Get Shaarli sources
+# - 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
-RUN curl -L https://github.com/shaarli/Shaarli/archive/master.tar.gz | tar xzf - \
-    && mv Shaarli-master shaarli \
-    && cd shaarli \
+COPY --from=docs /usr/src/app/shaarli /app/shaarli
+RUN cd shaarli \
     && composer --prefer-dist --no-dev install
 
-# Stage 2:
+# Stage 3:
 # - Frontend dependencies
 FROM node:9.9-alpine as node
 COPY --from=composer /app/shaarli shaarli
@@ -16,7 +23,7 @@ RUN cd shaarli \
     && yarn run build \
     && rm -rf node_modules
 
-# Stage 3:
+# Stage 4:
 # - Shaarli image
 FROM alpine:3.6
 LABEL maintainer="Shaarli Community"
@@ -39,9 +46,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 rm -rf /etc/php7/php-fpm.d/www.conf \
     && sed -i 's/post_max_size.*/post_max_size = 10M/' /etc/php7/php.ini \
similarity index 87%
rename from docker/alpine/Dockerfile.armhf.master
rename to Dockerfile.armhf
index 6c89adc3b9f734828f9e47257d4d1cea2a36c089..5dcc34aab006abed741c723197fa81004dd34b90 100644 (file)
@@ -1,5 +1,5 @@
 FROM lsiobase/alpine.armhf:3.6
-MAINTAINER Shaarli Community
+LABEL maintainer="Shaarli Community"
 
 RUN apk --update --no-cache add \
         ca-certificates \
@@ -21,9 +21,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 \
index c2de7cc78ada8cd1b5a87c920295fa89b8ccd0b5..59bd5b450642f67a870f22e218a828a3f7407aa1 100644 (file)
@@ -8,7 +8,7 @@ Read first:
 
 ### Docker test images
 
-Test Dockerfiles are located under `docker/tests/<distribution>/Dockerfile`,
+Test Dockerfiles are located under `tests/docker/<distribution>/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 .
 ```
 
index 12f7b5d1ffaf8672acd7b0e5c58f45c44f5132ca..e6fbff64220c61ac89c952688aa0d189b2d69320 100644 (file)
@@ -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
diff --git a/docker/alpine/Dockerfile.armhf.latest b/docker/alpine/Dockerfile.armhf.latest
deleted file mode 100644 (file)
index 824a192..0000000
+++ /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.latest b/docker/alpine/Dockerfile.latest
deleted file mode 100644 (file)
index 755d875..0000000
+++ /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/IMAGE.md b/docker/alpine/IMAGE.md
deleted file mode 100644 (file)
index a895225..0000000
+++ /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 (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/debian/IMAGE.md b/docker/debian/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/debian/nginx.conf b/docker/debian/nginx.conf
deleted file mode 100644 (file)
index e8754d9..0000000
+++ /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 (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