1+ # Build libvips
2+ FROM node:16-alpine3.16 as node-libvips-dev
3+
4+ ENV VIPS_VERSION=8.13.1
5+
6+ RUN apk add --no-cache meson gobject-introspection-dev wget g++ make expat-dev glib-dev python3 libwebp-dev jpeg-dev fftw-dev orc-dev libpng-dev tiff-dev lcms2-dev
7+
8+ WORKDIR /libvips
9+ RUN wget --quiet https://github.com/libvips/libvips/releases/download/v${VIPS_VERSION}/vips-${VIPS_VERSION}.tar.gz
10+ RUN tar xf vips-${VIPS_VERSION}.tar.gz
11+
12+ WORKDIR /libvips/vips-${VIPS_VERSION}
13+ RUN meson setup build-dir --buildtype=release
14+
15+ WORKDIR /libvips/vips-${VIPS_VERSION}/build-dir
16+ RUN meson compile
17+ RUN meson test
18+ RUN meson install
19+
20+ # Copy libvips and install dependencies
21+ FROM alpine:3.16 as alpine-libvips
22+ COPY --from=node-libvips-dev /usr/local/lib/pkgconfig/vips* /usr/local/lib/pkgconfig/
23+ COPY --from=node-libvips-dev /usr/local/lib/libvips* /usr/local/lib
24+ COPY --from=node-libvips-dev /usr/local/lib/vips* /usr/local/lib
25+ COPY --from=node-libvips-dev /usr/local/bin/vips* /usr/local/bin
26+ COPY --from=node-libvips-dev /usr/local/include/vips /usr/local/include/vips
27+ RUN apk add --no-cache expat glib libwebp jpeg fftw orc libpng tiff lcms2
28+
29+
130# Build server and client
2- FROM node:16-alpine3.16 as build
31+ FROM node-libvips-dev as build
332
433WORKDIR /app
534
@@ -9,24 +38,21 @@ COPY rest-api/ /app/rest-api
938COPY ["package.json" , "package-lock.json*" , "./" ]
1039
1140RUN apk add --no-cache python3 g++ make
12- RUN if [[ $(uname -m) == armv7l ]]; then apk add --no-cache vips-dev; fi
1341RUN npm install
1442RUN npm run build
1543
1644# Build server for production
17- FROM node:16-alpine3.16 as server-build-production
45+ FROM node-libvips-dev as server-build-production
1846
1947WORKDIR /server
2048COPY ["server/package.json" , "server/package-lock.json*" , "./" ]
2149RUN apk add --no-cache python3 g++ make
22- RUN if [[ $(uname -m) == armv7l ]]; then apk add --no-cache vips-dev; fi
2350RUN npm install --production
2451
2552FROM node:16-alpine3.16 as node
26- FROM alpine:3.16
53+ FROM alpine-libvips
2754
2855RUN apk add --no-cache curl shadow
29- RUN if [[ $(uname -m) == armv7l ]]; then apk add --no-cache vips; fi
3056
3157WORKDIR /storage
3258VOLUME /storage
0 commit comments