From ae98dea34f5d1e3e7a2bd03fd0b482cf1b57372e Mon Sep 17 00:00:00 2001 From: Viktor Sokolov Date: Tue, 7 Oct 2025 16:56:29 +0200 Subject: [PATCH 1/3] ubuntu-22.04, all dev deps in the container --- .vscode/settings.json | 6 ++++++ Dockerfile | 48 ++++++++++++++++++++++++++++++++++++------- download-deps.sh | 6 ++++++ versions.sh | 3 +++ 4 files changed, 56 insertions(+), 7 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..1c0275f --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "[dockerfile]": { + "editor.formatOnSave": false, + "editor.defaultFormatter": null + } +} diff --git a/Dockerfile b/Dockerfile index c3b86a7..f628539 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,8 @@ -# Use Debian Bullseye as a base image to link against glibc 2.31. -FROM public.ecr.aws/debian/debian:bullseye-slim AS base +# Base image for building imgproxy and its dependencies. +ARG BASE_IMAGE=public.ecr.aws/ubuntu/ubuntu:22.04 + +# Use ubuntu 22.04 as a base image to link against glibc 2.35. +FROM ${BASE_IMAGE} AS base RUN apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ @@ -28,7 +31,8 @@ FROM base AS deps COPY install-rust.sh ./ -RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ autoconf \ autopoint \ automake \ @@ -62,24 +66,52 @@ RUN ./install-go.sh # ============================================================================== -FROM public.ecr.aws/debian/debian:bullseye-slim AS final +FROM ${BASE_IMAGE} AS final LABEL maintainer="Sergey Alexandrovich " RUN apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ bash \ curl \ - git \ ca-certificates \ build-essential \ pkg-config \ libssl-dev \ - libstdc++-10-dev + libstdc++-10-dev \ + software-properties-common \ + gpg-agent \ + && apt-get clean \ + && truncate -s 0 /var/log/*log \ + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +# Install LLVM 20 (for clang-format) and latest git (custom, newer versions) +RUN echo "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-20 main" > /etc/apt/sources.list.d/llvm20.list \ + && curl -sSL https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - + +RUN apt-add-repository ppa:git-core/ppa + +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + git \ + clang-format \ + && apt-get clean \ + && truncate -s 0 /var/log/*log \ + && rm -rf /tmp/* \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* WORKDIR /root COPY --from=golang /usr/local/go /usr/local/go -ENV PATH=$PATH:/usr/local/go/bin +ENV PATH=$PATH:/usr/local/go/bin:/root/go/bin + +RUN go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.5.0 \ + && go install github.com/evilmartians/lefthook@latest \ + && go install gotest.tools/gotestsum@latest \ + && go install github.com/air-verse/air@latest \ + && go clean -cache -modcache + +COPY --from=deps /root/deps/lychee/lychee /usr/local/bin/lychee COPY --from=deps /opt/imgproxy/lib /opt/imgproxy/lib COPY --from=deps /opt/imgproxy/include /opt/imgproxy/include @@ -88,5 +120,7 @@ COPY --from=deps /opt/imgproxy/bin /opt/imgproxy/bin COPY --from=deps /root/.bashrc /root/.bashrc ENV BASH_ENV=/root/.bashrc +ENV IMGPROXY_IN_BASE_CONTAINER=true + WORKDIR /app CMD ["bash"] diff --git a/download-deps.sh b/download-deps.sh index 1ed4457..d826889 100755 --- a/download-deps.sh +++ b/download-deps.sh @@ -217,3 +217,9 @@ mkdir $DEPS_SRC/vips cd $DEPS_SRC/vips curl -Ls https://github.com/libvips/libvips/releases/download/v$VIPS_VERSION/vips-$VIPS_VERSION.tar.xz \ | tar -xJC . --strip-components=1 + +print_download_stage lychee $LYCHEE_VERSION +mkdir $DEPS_SRC/lychee +cd $DEPS_SRC/lychee +curl -L "https://github.com/lycheeverse/lychee/releases/download/lychee-v${LYCHEE_VERSION}/lychee-$(uname -m)-unknown-linux-gnu.tar.gz" \ + | tar -xz diff --git a/versions.sh b/versions.sh index 94fa4ca..f93c5f6 100644 --- a/versions.sh +++ b/versions.sh @@ -31,3 +31,6 @@ export FRIBIDI_VERSION=1.0.16 export PANGO_VERSION=1.57.0 export LIBRSVG_VERSION=2.61.3 export VIPS_VERSION=8.18.0 + +# dev depdendencies +export LYCHEE_VERSION=0.20.1 From bd3b65fa0e73470e9af4e7b3beecca2d27c654aa Mon Sep 17 00:00:00 2001 From: Viktor Sokolov Date: Thu, 27 Nov 2025 16:35:58 +0100 Subject: [PATCH 2/3] Install fonconfig+djvu fonts for svg --- Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Dockerfile b/Dockerfile index f628539..2ee2585 100644 --- a/Dockerfile +++ b/Dockerfile @@ -80,6 +80,8 @@ RUN apt-get update \ libstdc++-10-dev \ software-properties-common \ gpg-agent \ + fontconfig-config \ + fonts-dejavu-core \ && apt-get clean \ && truncate -s 0 /var/log/*log \ && rm -rf /tmp/* \ From 3862842a0d9b3d5c9c35c6c7b3da37df99d083ed Mon Sep 17 00:00:00 2001 From: Viktor Sokolov Date: Wed, 10 Dec 2025 12:17:33 +0100 Subject: [PATCH 3/3] Update golangci-lint to 2.7.2 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 2ee2585..3094980 100644 --- a/Dockerfile +++ b/Dockerfile @@ -107,7 +107,7 @@ WORKDIR /root COPY --from=golang /usr/local/go /usr/local/go ENV PATH=$PATH:/usr/local/go/bin:/root/go/bin -RUN go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.5.0 \ +RUN go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.7.2 \ && go install github.com/evilmartians/lefthook@latest \ && go install gotest.tools/gotestsum@latest \ && go install github.com/air-verse/air@latest \