Skip to content

Commit 6feb103

Browse files
committed
feat: better base image
1 parent 8fbabc6 commit 6feb103

1 file changed

Lines changed: 25 additions & 43 deletions

File tree

Dockerfile.base

Lines changed: 25 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,42 @@
11
FROM ubuntu:20.04 as builder
22

3-
ENV LIBVIPS_VERSION 8.11.2
4-
ENV GOLANG_VERSION 1.25.4
5-
ARG TARGETARCH amd64
6-
ARG TAG 'dev'
7-
ARG COMMIT "master"
8-
ARG DATE "now"
9-
10-
# Installs libvips + required libraries
3+
ENV LIBVIPS_VERSION=8.11.2
4+
ENV GOLANG_VERSION=1.25.4
5+
ARG TARGETARCH=amd64
6+
ARG TAG='dev'
7+
ARG COMMIT="master"
8+
ARG DATE="now"
9+
10+
# Install build dependencies, build libvips, and install Go in optimized layers
1111
RUN apt-get update && \
12-
DEBIAN_FRONTEND=noninteractive apt-get install -y \
12+
DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \
1313
ca-certificates \
14-
automake build-essential curl \
14+
automake build-essential curl gcc git libc6-dev make \
1515
gobject-introspection gtk-doc-tools libglib2.0-dev libjpeg-turbo8-dev libpng-dev \
1616
libwebp-dev libtiff5-dev libgif-dev libexif-dev libxml2-dev libpoppler-glib-dev \
1717
swig libmagickwand-dev libpango1.0-dev libmatio-dev libopenslide-dev libcfitsio-dev \
18-
libgsf-1-dev fftw3-dev liborc-0.4-dev librsvg2-dev libimagequant-dev libaom-dev libbrotli-dev
19-
RUN cd /tmp && \
20-
curl -OL https://github.com/libvips/libvips/releases/download/v${LIBVIPS_VERSION}/vips-${LIBVIPS_VERSION}.tar.gz && \
21-
tar zvxf vips-${LIBVIPS_VERSION}.tar.gz && \
22-
cd /tmp/vips-${LIBVIPS_VERSION} && \
23-
./configure --enable-debug=no --without-python $1 && \
24-
make -j 4 && \
18+
libgsf-1-dev fftw3-dev liborc-0.4-dev librsvg2-dev libimagequant-dev libaom-dev libbrotli-dev && \
19+
cd /tmp && \
20+
curl -fsSL https://github.com/libvips/libvips/releases/download/v${LIBVIPS_VERSION}/vips-${LIBVIPS_VERSION}.tar.gz | tar xz && \
21+
cd vips-${LIBVIPS_VERSION} && \
22+
./configure --enable-debug=no --without-python --disable-static && \
23+
make -j$(nproc) && \
2524
make install && \
2625
ldconfig && \
26+
cd / && \
27+
rm -rf /tmp/vips-${LIBVIPS_VERSION} && \
2728
apt-get autoremove -y && \
2829
apt-get autoclean && \
2930
apt-get clean && \
30-
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
31-
32-
# gcc for cgo
33-
RUN apt-get update && apt-get install -y \
34-
gcc curl git libc6-dev make ca-certificates \
35-
--no-install-recommends \
36-
&& rm -rf /var/lib/apt/lists/*
37-
38-
ENV GOLANG_DOWNLOAD_URL https://golang.org/dl/go$GOLANG_VERSION.linux-$TARGETARCH.tar.gz
31+
rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/*
3932

40-
RUN curl -fsSL --insecure "$GOLANG_DOWNLOAD_URL" -o golang.tar.gz \
41-
&& tar -C /usr/local -xzf golang.tar.gz \
42-
&& rm golang.tar.gz
43-
44-
ENV WORKDIR /workspace
45-
ENV PATH /usr/local/go/bin:$PATH
33+
# Install Go
34+
ENV GOLANG_DOWNLOAD_URL=https://golang.org/dl/go${GOLANG_VERSION}.linux-${TARGETARCH}.tar.gz
35+
RUN curl -fsSL "$GOLANG_DOWNLOAD_URL" | tar -C /usr/local -xz
4636

37+
ENV WORKDIR=/workspace
38+
ENV PATH=/usr/local/go/bin:$PATH
39+
ENV CGO_CFLAGS_ALLOW="-Xpreprocessor"
4740

4841
WORKDIR $WORKDIR
49-
COPY go.mod ./
50-
COPY go.sum ./
51-
RUN go mod download
52-
53-
COPY cmd/ $WORKDIR/cmd
54-
COPY .godir ${WORKDIR}/.godir
55-
COPY configuration/ ${WORKDIR}/configuration
56-
COPY etc/ ${WORKDIR}/etc
57-
COPY pkg/ ${WORKDIR}/pkg
58-
COPY scripts/ ${WORKDIR}/scripts
59-
COPY Makefile ${WORKDIR}/Makefile
6042

0 commit comments

Comments
 (0)