Dockerfile.master 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. # Stage 1:
  2. # - Get Shaarli sources
  3. # - Resolve PHP dependencies with Composer
  4. FROM composer:latest as composer
  5. RUN curl -L https://github.com/shaarli/Shaarli/archive/master.tar.gz | tar xzf - \
  6. && mv Shaarli-master shaarli \
  7. && cd shaarli \
  8. && composer --prefer-dist --no-dev install
  9. # Stage 2:
  10. # - Frontend dependencies
  11. FROM node:9.9-alpine as node
  12. COPY --from=composer /app/shaarli shaarli
  13. RUN cd shaarli \
  14. && yarn install \
  15. && yarn run build \
  16. && rm -rf node_modules
  17. # Stage 3:
  18. # - Shaarli image
  19. FROM alpine:3.6
  20. LABEL maintainer="Shaarli Community"
  21. RUN apk --update --no-cache add \
  22. ca-certificates \
  23. nginx \
  24. php7 \
  25. php7-ctype \
  26. php7-curl \
  27. php7-fpm \
  28. php7-gd \
  29. php7-iconv \
  30. php7-intl \
  31. php7-json \
  32. php7-mbstring \
  33. php7-openssl \
  34. php7-session \
  35. php7-xml \
  36. php7-zlib \
  37. s6
  38. COPY nginx.conf /etc/nginx/nginx.conf
  39. COPY php-fpm.conf /etc/php7/php-fpm.conf
  40. COPY services.d /etc/services.d
  41. RUN rm -rf /etc/php7/php-fpm.d/www.conf \
  42. && sed -i 's/post_max_size.*/post_max_size = 10M/' /etc/php7/php.ini \
  43. && sed -i 's/upload_max_filesize.*/upload_max_filesize = 10M/' /etc/php7/php.ini
  44. WORKDIR /var/www
  45. COPY --from=node /shaarli shaarli
  46. RUN chown -R nginx:nginx . \
  47. && ln -sf /dev/stdout /var/log/nginx/shaarli.access.log \
  48. && ln -sf /dev/stderr /var/log/nginx/shaarli.error.log
  49. VOLUME /var/www/shaarli/data
  50. EXPOSE 80
  51. ENTRYPOINT ["/bin/s6-svscan", "/etc/services.d"]
  52. CMD []