From bb1620d7d22e3b8e205481a3eebdea723b0f9776 Mon Sep 17 00:00:00 2001 From: sh <37271604+shumvgolove@users.noreply.github.com> Date: Wed, 14 Feb 2024 20:33:48 +0000 Subject: [PATCH] docker: update and fix build (#3805) --- Dockerfile | 45 +++++++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/Dockerfile b/Dockerfile index 834f2374a6..6c60195f97 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,32 +1,41 @@ -FROM ubuntu:focal AS build +ARG TAG=22.04 -# Install curl and simplex-chat-related dependencies -RUN apt-get update && apt-get install -y curl git build-essential libgmp3-dev zlib1g-dev libssl-dev +FROM ubuntu:${TAG} AS build + +### Build stage + +# Install curl and git and simplex-chat dependencies +RUN apt-get update && apt-get install -y curl git build-essential libgmp3-dev zlib1g-dev llvm-12 llvm-12-dev libnuma-dev libssl-dev + +# Specify bootstrap Haskell versions +ENV BOOTSTRAP_HASKELL_GHC_VERSION=9.6.3 +ENV BOOTSTRAP_HASKELL_CABAL_VERSION=3.10.1.0 # Install ghcup -RUN a=$(arch); curl https://downloads.haskell.org/~ghcup/$a-linux-ghcup -o /usr/bin/ghcup && \ - chmod +x /usr/bin/ghcup - -# Install ghc -RUN ghcup install ghc 9.6.3 -# Install cabal -RUN ghcup install cabal 3.10.1.0 -# Set both as default -RUN ghcup set ghc 9.6.3 && \ - ghcup set cabal 3.10.1.0 - -COPY . /project -WORKDIR /project +RUN curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | BOOTSTRAP_HASKELL_NONINTERACTIVE=1 sh # Adjust PATH ENV PATH="/root/.cabal/bin:/root/.ghcup/bin:$PATH" +# Set both as default +RUN ghcup set ghc "${BOOTSTRAP_HASKELL_GHC_VERSION}" && \ + ghcup set cabal "${BOOTSTRAP_HASKELL_CABAL_VERSION}" + +COPY . /project +WORKDIR /project + # Adjust build RUN cp ./scripts/cabal.project.local.linux ./cabal.project.local # Compile simplex-chat RUN cabal update -RUN cabal install +RUN cabal build exe:simplex-chat +# Strip the binary from debug symbols to reduce size +RUN bin=$(find /project/dist-newstyle -name "simplex-chat" -type f -executable) && \ + mv "$bin" ./ && \ + strip ./simplex-chat + +# Copy compiled app from build stage FROM scratch AS export-stage -COPY --from=build /root/.cabal/bin/simplex-chat / +COPY --from=build /project/simplex-chat /