diff options
Diffstat (limited to 'Dockerfile')
-rw-r--r-- | Dockerfile | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..6261e81b --- /dev/null +++ b/Dockerfile | |||
@@ -0,0 +1,71 @@ | |||
1 | # Stage 1: | ||
2 | # - Copy Shaarli sources | ||
3 | # - Build documentation | ||
4 | FROM python:3-alpine as docs | ||
5 | ADD . /usr/src/app/shaarli | ||
6 | RUN cd /usr/src/app/shaarli \ | ||
7 | && pip install --no-cache-dir mkdocs \ | ||
8 | && mkdocs build --clean | ||
9 | |||
10 | # Stage 2: | ||
11 | # - Resolve PHP dependencies with Composer | ||
12 | FROM composer:latest as composer | ||
13 | COPY --from=docs /usr/src/app/shaarli /app/shaarli | ||
14 | RUN cd shaarli \ | ||
15 | && composer --prefer-dist --no-dev install | ||
16 | |||
17 | # Stage 3: | ||
18 | # - Frontend dependencies | ||
19 | FROM node:9.9-alpine as node | ||
20 | COPY --from=composer /app/shaarli shaarli | ||
21 | RUN cd shaarli \ | ||
22 | && yarn install \ | ||
23 | && yarn run build \ | ||
24 | && rm -rf node_modules | ||
25 | |||
26 | # Stage 4: | ||
27 | # - Shaarli image | ||
28 | FROM alpine:3.7 | ||
29 | LABEL maintainer="Shaarli Community" | ||
30 | |||
31 | RUN apk --update --no-cache add \ | ||
32 | ca-certificates \ | ||
33 | nginx \ | ||
34 | php7 \ | ||
35 | php7-ctype \ | ||
36 | php7-curl \ | ||
37 | php7-fpm \ | ||
38 | php7-gd \ | ||
39 | php7-iconv \ | ||
40 | php7-intl \ | ||
41 | php7-json \ | ||
42 | php7-mbstring \ | ||
43 | php7-openssl \ | ||
44 | php7-session \ | ||
45 | php7-xml \ | ||
46 | php7-zlib \ | ||
47 | s6 | ||
48 | |||
49 | COPY .docker/nginx.conf /etc/nginx/nginx.conf | ||
50 | COPY .docker/php-fpm.conf /etc/php7/php-fpm.conf | ||
51 | COPY .docker/services.d /etc/services.d | ||
52 | |||
53 | RUN rm -rf /etc/php7/php-fpm.d/www.conf \ | ||
54 | && sed -i 's/post_max_size.*/post_max_size = 10M/' /etc/php7/php.ini \ | ||
55 | && sed -i 's/upload_max_filesize.*/upload_max_filesize = 10M/' /etc/php7/php.ini | ||
56 | |||
57 | |||
58 | WORKDIR /var/www | ||
59 | COPY --from=node /shaarli shaarli | ||
60 | |||
61 | RUN chown -R nginx:nginx . \ | ||
62 | && ln -sf /dev/stdout /var/log/nginx/shaarli.access.log \ | ||
63 | && ln -sf /dev/stderr /var/log/nginx/shaarli.error.log | ||
64 | |||
65 | VOLUME /var/www/shaarli/cache | ||
66 | VOLUME /var/www/shaarli/data | ||
67 | |||
68 | EXPOSE 80 | ||
69 | |||
70 | ENTRYPOINT ["/bin/s6-svscan", "/etc/services.d"] | ||
71 | CMD [] | ||