Skip to content

Commit 260f560

Browse files
authored
Build libvips from source in Dockerfile (#432)
* Build libvips from source in Dockerfile * add quiet flag to wget
1 parent a451729 commit 260f560

1 file changed

Lines changed: 32 additions & 6 deletions

File tree

Dockerfile

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,34 @@
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

433
WORKDIR /app
534

@@ -9,24 +38,21 @@ COPY rest-api/ /app/rest-api
938
COPY ["package.json", "package-lock.json*", "./"]
1039

1140
RUN apk add --no-cache python3 g++ make
12-
RUN if [[ $(uname -m) == armv7l ]]; then apk add --no-cache vips-dev; fi
1341
RUN npm install
1442
RUN 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

1947
WORKDIR /server
2048
COPY ["server/package.json", "server/package-lock.json*", "./"]
2149
RUN apk add --no-cache python3 g++ make
22-
RUN if [[ $(uname -m) == armv7l ]]; then apk add --no-cache vips-dev; fi
2350
RUN npm install --production
2451

2552
FROM node:16-alpine3.16 as node
26-
FROM alpine:3.16
53+
FROM alpine-libvips
2754

2855
RUN apk add --no-cache curl shadow
29-
RUN if [[ $(uname -m) == armv7l ]]; then apk add --no-cache vips; fi
3056

3157
WORKDIR /storage
3258
VOLUME /storage

0 commit comments

Comments
 (0)