From 2270e208d2ca5c884c877f92f67cc281f24906cb Mon Sep 17 00:00:00 2001 From: itchyny Date: Tue, 4 Jul 2023 16:00:04 +0900 Subject: [PATCH] Improve Dockerfile: update base image and optimize image size (#2649) Also, drop ineffectual flags from configure. --- .github/workflows/ci.yml | 12 +++---- Dockerfile | 72 +++++++++++++++------------------------- 2 files changed, 31 insertions(+), 53 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2a5aa92f..cf0bd590 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -43,8 +43,7 @@ jobs: - name: Build run: | autoreconf -i - ./configure --disable-dependency-tracking \ - --disable-silent-rules \ + ./configure \ --disable-docs \ --disable-maintainer-mode \ --disable-valgrind \ @@ -96,8 +95,7 @@ jobs: - name: Build run: | autoreconf -i - ./configure --disable-dependency-tracking \ - --disable-silent-rules \ + ./configure \ --disable-docs \ --disable-maintainer-mode \ --disable-valgrind \ @@ -156,8 +154,7 @@ jobs: shell: msys2 {0} run: | autoreconf -i - ./configure --disable-dependency-tracking \ - --disable-silent-rules \ + ./configure \ --disable-docs \ --disable-maintainer-mode \ --disable-valgrind \ @@ -203,8 +200,7 @@ jobs: - name: Create dist run: | autoreconf -i - ./configure --disable-dependency-tracking \ - --disable-silent-rules \ + ./configure \ --disable-docs \ --disable-maintainer-mode \ --disable-valgrind \ diff --git a/Dockerfile b/Dockerfile index f69f1f4d..18eccbed 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,54 +1,36 @@ -FROM debian:9 +FROM debian:12-slim AS builder ENV DEBIAN_FRONTEND=noninteractive \ DEBCONF_NONINTERACTIVE_SEEN=true \ LC_ALL=C.UTF-8 \ LANG=C.UTF-8 +RUN apt-get update \ + && apt-get install -y \ + build-essential \ + autoconf \ + libtool \ + git \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /app COPY . /app +RUN autoreconf -i \ + && ./configure \ + --disable-docs \ + --disable-maintainer-mode \ + --disable-valgrind \ + --with-oniguruma=builtin \ + --enable-static \ + --enable-all-static \ + --prefix=/usr/local \ + && make -j$(nproc) \ + && make check \ + && make install-strip -# get dependencies, build, and remove anything we don't need for running jq. -# valgrind seems to have trouble with pthreads TLS so it's off. +FROM scratch -RUN apt-get update && \ - apt-get install -y \ - build-essential \ - autoconf \ - libtool \ - git \ - bison \ - flex \ - python3 \ - python3-pip \ - wget && \ - pip3 install pipenv && \ - (cd /app/docs && pipenv sync) && \ - (cd /app && \ - git submodule init && \ - git submodule update && \ - autoreconf -i && \ - ./configure --disable-valgrind --enable-all-static --prefix=/usr/local && \ - make -j8 && \ - make check && \ - make install ) && \ - (cd /app/modules/oniguruma && \ - make uninstall ) && \ - (cd /app && \ - make distclean ) && \ - apt-get purge -y \ - build-essential \ - autoconf \ - libtool \ - bison \ - git \ - flex \ - python3 \ - python3-pip && \ - apt-get autoremove -y && \ - rm -rf /app/modules/oniguruma/* && \ - rm -rf /app/modules/oniguruma/.git && \ - rm -rf /app/modules/oniguruma/.gitignore && \ - rm -rf /var/lib/apt/lists/* /var/lib/gems - -ENTRYPOINT ["/usr/local/bin/jq"] -CMD [] +COPY --from=builder /app/AUTHORS /app/COPYING /usr/local/bin/jq / +RUN ["/jq", "--version"] +ENTRYPOINT ["/jq"]