mirror of
https://github.com/CaramelFur/Picsur.git
synced 2025-10-26 06:56:06 +01:00
50 lines
1.5 KiB
Docker
50 lines
1.5 KiB
Docker
# This dockerfile than builds the production dependencies and the final image
|
|
|
|
# Always fetch amd64 image
|
|
FROM ghcr.io/caramelfur/picsur-alpha-stage1:latest AS builder_stage1
|
|
|
|
# === START VIPS ===
|
|
FROM node:20-alpine AS vips_builder
|
|
RUN apk add build-base meson cmake pkgconfig glib-dev \
|
|
expat-dev libexif-dev jpeg-dev libjxl-dev openjpeg-dev libpng-dev \
|
|
tiff-dev libheif-dev libwebp-dev cgif-dev imagemagick-dev \
|
|
librsvg-dev pango-dev cfitsio-dev poppler-dev libspng-dev \
|
|
lcms2-dev fftw-dev libimagequant-dev
|
|
WORKDIR /vips
|
|
RUN wget https://github.com/libvips/libvips/releases/download/v8.16.0/vips-8.16.0.tar.xz -O vips.tar.xz
|
|
RUN tar -xf vips.tar.xz && \
|
|
cd vips-* && \
|
|
meson setup build -Dexamples=false && \
|
|
cd build && \
|
|
meson compile && \
|
|
meson install
|
|
|
|
FROM node:20-alpine AS vips_clean
|
|
COPY --from=vips_builder /usr/local /usr/local
|
|
RUN apk add pkgconfig glib expat libexif jpeg libjxl openjpeg libpng tiff \
|
|
libheif libwebp cgif imagemagick librsvg pango cfitsio poppler poppler-glib \
|
|
libspng lcms2 fftw libimagequant
|
|
# === END VIPS ===
|
|
|
|
FROM vips_builder AS builder_stage2
|
|
|
|
RUN npm install -g pnpm node-gyp
|
|
RUN apk add python3 build-base
|
|
|
|
WORKDIR /picsur
|
|
COPY --from=builder_stage1 /picsur ./
|
|
ENV SHARP_FORCE_GLOBAL_LIBVIPS=1
|
|
RUN pnpm install --frozen-lockfile --prod
|
|
|
|
FROM vips_clean
|
|
|
|
RUN npm install -g pnpm
|
|
|
|
ENV PICSUR_PRODUCTION=true
|
|
|
|
WORKDIR /picsur
|
|
COPY --from=builder_stage2 /picsur ./
|
|
|
|
CMD ["pnpm", "--filter", "picsur-backend", "start:prod"]
|
|
|