|
1 | 1 | FROM ubuntu:20.04 as builder |
2 | 2 |
|
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 |
11 | 11 | RUN apt-get update && \ |
12 | | - DEBIAN_FRONTEND=noninteractive apt-get install -y \ |
| 12 | + DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \ |
13 | 13 | ca-certificates \ |
14 | | - automake build-essential curl \ |
| 14 | + automake build-essential curl gcc git libc6-dev make \ |
15 | 15 | gobject-introspection gtk-doc-tools libglib2.0-dev libjpeg-turbo8-dev libpng-dev \ |
16 | 16 | libwebp-dev libtiff5-dev libgif-dev libexif-dev libxml2-dev libpoppler-glib-dev \ |
17 | 17 | 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) && \ |
25 | 24 | make install && \ |
26 | 25 | ldconfig && \ |
| 26 | + cd / && \ |
| 27 | + rm -rf /tmp/vips-${LIBVIPS_VERSION} && \ |
27 | 28 | apt-get autoremove -y && \ |
28 | 29 | apt-get autoclean && \ |
29 | 30 | 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/* |
39 | 32 |
|
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 |
46 | 36 |
|
| 37 | +ENV WORKDIR=/workspace |
| 38 | +ENV PATH=/usr/local/go/bin:$PATH |
| 39 | +ENV CGO_CFLAGS_ALLOW="-Xpreprocessor" |
47 | 40 |
|
48 | 41 | 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 |
60 | 42 |
|
0 commit comments