-
Notifications
You must be signed in to change notification settings - Fork 35
Expand file tree
/
Copy pathDockerfile
More file actions
79 lines (72 loc) · 2.55 KB
/
Copy pathDockerfile
File metadata and controls
79 lines (72 loc) · 2.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# =========================
# build stage (Debian/glibc)
# =========================
FROM amazonlinux:2023 AS nodejs
ENV MISE_DATA_DIR="/mise"
ENV MISE_CONFIG_DIR="/mise"
ENV MISE_CACHE_DIR="/mise/cache"
ENV MISE_INSTALL_PATH="/usr/local/bin/mise"
ENV PATH="/mise/shims:$PATH"
RUN dnf install -y tar gzip \
&& curl https://mise.run | sh
ADD mise.toml .
RUN mise trust /mise.toml && mise install
FROM nodejs AS build
ENV PREFIX_PATH=/usr/local \
LIB_PATH=/usr/local/lib \
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig \
LD_LIBRARY_PATH=/usr/local/lib
RUN dnf groupinstall -y "Development Tools" && \
dnf install -y glibc-langpack-en glib2-devel expat-devel libjpeg-turbo-devel libpng-devel libwebp-devel \
libexif-devel libimagequant-devel librsvg2-devel libtiff-devel lcms2-devel gobject-introspection-devel \
cmake nasm pkg-config meson ninja-build
# ---- cgif (Meson) ----
ARG CGIF_VERSION=0.5.3
RUN <<EOF
curl -L "https://github.com/dloebl/cgif/archive/refs/tags/v${CGIF_VERSION}.tar.gz" | tar zx
cd "cgif-${CGIF_VERSION}"
meson setup build --prefix="${PREFIX_PATH}" --libdir="${LIB_PATH}" --buildtype=release
meson compile -C build
meson install -C build
ldconfig
EOF
# ---- openjpeg (libopenjp2) ----
ARG LIBOPENJP2_VERSION=2.5.4
# curl -L "https://github.com/uclouvain/openjpeg/archive/refs/tags/v${LIBOPENJP2_VERSION}.tar.gz" | tar zx
# mkdir -p "openjpeg-${LIBOPENJP2_VERSION}/build"
# cd "openjpeg-${LIBOPENJP2_VERSION}/build"
RUN <<EOF
git clone --single-branch --branch master https://github.com/uclouvain/openjpeg.git
cd openjpeg
cmake -B build . -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_LIBDIR="${LIB_PATH}"
cd build
make -j"$(nproc)"
make install
EOF
# ---- libvips (Meson) ----
ARG VIPS_VERSION=8.18.4
RUN <<EOF
curl -L "https://github.com/libvips/libvips/releases/download/v${VIPS_VERSION}/vips-${VIPS_VERSION}.tar.xz" | tar xJ
cd "vips-${VIPS_VERSION}"
meson setup build --prefix="${PREFIX_PATH}" --libdir="${LIB_PATH}" --buildtype=release
meson compile -C build
meson install -C build
ldconfig
EOF
RUN vips --version && pkg-config --modversion vips-cpp
# =========================
# deps stage (provider-specific SDKs)
# =========================
FROM build AS deps
WORKDIR /app
ARG SHARP_VERSION=0.35.3
RUN <<EOF
npm install node-gyp@latest node-addon-api@latest
npm install sharp@${SHARP_VERSION}
npm explore sharp -- npm run build
npm cache clean --force
EOF
RUN <<EOF
mkdir -p /export/lib
ldd ./node_modules/sharp/src/build/Release/sharp-linux-x64-${SHARP_VERSION}.node | awk '{ print $3 }' | xargs cp -v --target-directory=/export/lib
EOF