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 --- Dockerfile | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 Dockerfile (limited to 'Dockerfile') 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 [] -- cgit v1.2.3