1- # Use Debian Bullseye as a base image to link against glibc 2.31.
2- FROM public.ecr.aws/debian/debian:bullseye-slim AS base
1+ # Base image for building imgproxy and its dependencies.
2+ ARG BASE_IMAGE=public.ecr.aws/ubuntu/ubuntu:22.04
3+
4+ # Use ubuntu 22.04 as a base image to link against glibc 2.35.
5+ FROM ${BASE_IMAGE} AS base
36
47RUN apt-get update \
58 && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
@@ -10,7 +13,11 @@ RUN apt-get update \
1013 build-essential \
1114 pkg-config \
1215 libssl-dev \
13- libstdc++-10-dev
16+ libstdc++-10-dev \
17+ && apt-get clean \
18+ && truncate -s 0 /var/log/*log \
19+ && rm -rf /tmp/* \
20+ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
1421
1522WORKDIR /root
1623
@@ -27,7 +34,8 @@ FROM base AS deps
2734
2835COPY install-rust.sh ./
2936
30- RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
37+ RUN apt-get update \
38+ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
3139 autoconf \
3240 autopoint \
3341 automake \
@@ -40,7 +48,11 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
4048 gperf \
4149 && ./install-rust.sh \
4250 && python3 -m venv /root/.python \
43- && /root/.python/bin/pip install meson ninja packaging
51+ && /root/.python/bin/pip install meson ninja packaging \
52+ && apt-get clean \
53+ && truncate -s 0 /var/log/*log \
54+ && rm -rf /tmp/* \
55+ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
4456
4557COPY versions.sh build-deps.sh build-bash-profile.sh *.patch ./
4658COPY --from=deps-src /root/deps /root/deps
@@ -61,24 +73,52 @@ RUN ./install-go.sh
6173
6274# ==============================================================================
6375
64- FROM public.ecr.aws/debian/debian:bullseye-slim AS final
76+ FROM ${BASE_IMAGE} AS final
6577LABEL maintainer=
"Sergey Alexandrovich <[email protected] >" 6678
6779RUN apt-get update \
6880 && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
6981 bash \
7082 curl \
71- git \
7283 ca-certificates \
7384 build-essential \
7485 pkg-config \
7586 libssl-dev \
76- libstdc++-10-dev
87+ libstdc++-10-dev \
88+ software-properties-common \
89+ gpg-agent \
90+ && apt-get clean \
91+ && truncate -s 0 /var/log/*log \
92+ && rm -rf /tmp/* \
93+ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
94+
95+ # Install LLVM 20 (for clang-format) and latest git (custom, newer versions)
96+ RUN echo "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-20 main" > /etc/apt/sources.list.d/llvm20.list \
97+ && curl -sSL https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -
98+
99+ RUN apt-add-repository ppa:git-core/ppa
100+
101+ RUN apt-get update \
102+ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
103+ git \
104+ clang-format \
105+ && apt-get clean \
106+ && truncate -s 0 /var/log/*log \
107+ && rm -rf /tmp/* \
108+ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
77109
78110WORKDIR /root
79111
80112COPY --from=golang /usr/local/go /usr/local/go
81- ENV PATH=$PATH:/usr/local/go/bin
113+ ENV PATH=$PATH:/usr/local/go/bin:/root/go/bin
114+
115+ RUN go install github.com/golangci/golangci-lint/v2/cmd/
[email protected] \
116+ && go install github.com/evilmartians/lefthook@latest \
117+ && go install gotest.tools/gotestsum@latest \
118+ && go install github.com/air-verse/air@latest \
119+ && go clean -cache -modcache
120+
121+ COPY --from=deps /root/deps/lychee/lychee /usr/local/bin/lychee
82122
83123COPY --from=deps /opt/imgproxy/lib /opt/imgproxy/lib
84124COPY --from=deps /opt/imgproxy/include /opt/imgproxy/include
@@ -87,5 +127,7 @@ COPY --from=deps /opt/imgproxy/bin /opt/imgproxy/bin
87127COPY --from=deps /root/.bashrc /root/.bashrc
88128ENV BASH_ENV=/root/.bashrc
89129
130+ ENV IMGPROXY_IN_BASE_CONTAINER=true
131+
90132WORKDIR /app
91133CMD ["bash" ]
0 commit comments