From b0c5efe71c04228e31b90a7d54735e1a2cadb3d7 Mon Sep 17 00:00:00 2001 From: Lars Kuhtz Date: Wed, 18 Sep 2024 15:53:46 -0700 Subject: [PATCH] update Dockerfile --- Dockerfile | 188 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 108 insertions(+), 80 deletions(-) diff --git a/Dockerfile b/Dockerfile index 44a25a182d..03a6492a48 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -# syntax = docker/dockerfile:1.4 +# syntax = docker/dockerfile:1 # INSTRUCTIONS # @@ -46,8 +46,9 @@ # support this we would have to define dedicated runtime images and build # images. -ARG UBUNTU_VERSION=20.04 -ARG GHC_VERSION=9.6.2 +ARG UBUNTU_VERSION=22.04 +ARG GHC_VERSION=9.10.1 +ARG PROJECT_NAME=chainweb # ############################################################################ # # Chainweb Application Runtime Image @@ -57,32 +58,33 @@ FROM ubuntu:${UBUNTU_VERSION} AS chainweb-runtime ARG GHC_VERSION ARG UBUNTU_VERSION ARG TARGETPLATFORM -RUN apt-get update -y \ - && export DEBIAN_FRONTEND=noninteractive \ - && apt-get install -yqq \ +ARG DEBIAN_FRONTEND=noninteractive +RUN <&2 ; \ @@ -166,19 +180,16 @@ RUN sh /tools/check-git-clean.sh || touch /tools/wip FROM chainweb-build-ctx as chainweb-build-dependencies ARG TARGETPLATFORM -# RUN git clone --filter=tree:0 https://github.com/kadena-io/chainweb-node -# WORKDIR /chainweb/chainweb-node -# RUN git checkout $GIT_REV -COPY . . +ARG PROJECT_NAME ENV GIT_DISCOVERY_ACROSS_FILESYSTEM=1 RUN --mount=type=cache,target=/root/.cabal,id=${TARGETPLATFORM} \ - --mount=type=cache,target=./dist-newstyle,id=chainweb-${TARGETPLATFORM},sharing=locked \ + --mount=type=cache,target=./dist-newstyle,id=${PROJECT_NAME}-${TARGETPLATFORM},sharing=locked \ [ -f cabal.project.freeze ] || cabal --enable-tests --enable-benchmarks freeze RUN --mount=type=cache,target=/root/.cabal,id=${TARGETPLATFORM} \ - --mount=type=cache,target=./dist-newstyle,id=chainweb-${TARGETPLATFORM},sharing=locked \ + --mount=type=cache,target=./dist-newstyle,id=${PROJECT_NAME}-${TARGETPLATFORM},sharing=locked \ cabal build --enable-tests --enable-benchmarks --only-download RUN --mount=type=cache,target=/root/.cabal,id=${TARGETPLATFORM} \ - --mount=type=cache,target=./dist-newstyle,id=chainweb-${TARGETPLATFORM},sharing=locked \ + --mount=type=cache,target=./dist-newstyle,id=${PROJECT_NAME}-${TARGETPLATFORM},sharing=locked \ cabal build --enable-tests --enable-benchmarks --only-dependencies # ############################################################################ # @@ -186,9 +197,10 @@ RUN --mount=type=cache,target=/root/.cabal,id=${TARGETPLATFORM} \ FROM chainweb-build-dependencies AS chainweb-build-lib ARG TARGETPLATFORM +ARG PROJECT_NAME ENV GIT_DISCOVERY_ACROSS_FILESYSTEM=1 RUN --mount=type=cache,target=/root/.cabal,id=${TARGETPLATFORM} \ - --mount=type=cache,target=./dist-newstyle,id=chainweb-${TARGETPLATFORM},sharing=locked \ + --mount=type=cache,target=./dist-newstyle,id=${PROJECT_NAME}-${TARGETPLATFORM},sharing=locked \ cabal build --enable-tests --enable-benchmarks chainweb:lib:chainweb RUN sh /tools/check-git-clean.sh @@ -197,61 +209,71 @@ RUN sh /tools/check-git-clean.sh FROM chainweb-build-lib AS chainweb-build-tests ARG TARGETPLATFORM +ARG PROJECT_NAME RUN --mount=type=cache,target=/root/.cabal,id=${TARGETPLATFORM} \ - --mount=type=cache,target=./dist-newstyle,id=chainweb-${TARGETPLATFORM},sharing=locked \ + --mount=type=cache,target=./dist-newstyle,id=${PROJECT_NAME}-${TARGETPLATFORM},sharing=locked \ cabal build --enable-tests --enable-benchmarks chainweb:test:chainweb-tests RUN sh /tools/check-git-clean.sh RUN --mount=type=cache,target=/root/.cabal,id=${TARGETPLATFORM} \ - --mount=type=cache,target=./dist-newstyle,id=chainweb-${TARGETPLATFORM},sharing=locked \ - mkdir -p artifacts \ - && cp $(cabal list-bin --enable-tests --enable-benchmarks chainweb:test:chainweb-tests) artifacts/ + --mount=type=cache,target=./dist-newstyle,id=${PROJECT_NAME}-${TARGETPLATFORM},sharing=locked <&2 ; exit 1 ; } +EOF RUN --mount=type=cache,target=/root/.cabal,id=${TARGETPLATFORM} \ - --mount=type=cache,target=./dist-newstyle,id=chainweb-${TARGETPLATFORM},sharing=locked \ - mkdir -p artifacts \ - && cp $(cabal list-bin --enable-tests --enable-benchmarks chainweb:exe:cwtool) artifacts/ + --mount=type=cache,target=./dist-newstyle,id=${PROJECT_NAME}-${TARGETPLATFORM},sharing=locked <