From a88dbf570483f025eca43a38bf60fe515fb187ec Mon Sep 17 00:00:00 2001 From: Aaron Fiore Date: Wed, 10 Dec 2025 09:35:24 -0800 Subject: [PATCH 1/2] client: Dockerfiles: remote: hledger-suite: bump hledger to 1.51.1 --- client/Dockerfiles/remote/hledger-suite/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/Dockerfiles/remote/hledger-suite/Dockerfile b/client/Dockerfiles/remote/hledger-suite/Dockerfile index 0fa1022..cf02d5a 100644 --- a/client/Dockerfiles/remote/hledger-suite/Dockerfile +++ b/client/Dockerfiles/remote/hledger-suite/Dockerfile @@ -52,7 +52,7 @@ RUN cabal v1-copy # WORKDIR /usr/local/src -RUN git clone --depth=1 https://github.com/simonmichael/hledger -b 1.50.3 +RUN git clone --depth=1 https://github.com/simonmichael/hledger -b 1.51.1 WORKDIR /usr/local/src/hledger RUN stack setup From f669c01f97d43c0fb7c8ad093f52461023f7e423 Mon Sep 17 00:00:00 2001 From: Aaron Fiore Date: Wed, 10 Dec 2025 10:36:21 -0800 Subject: [PATCH 2/2] client: Dockerfiles: remote: hledger-suite: use multi-stage The previous hledger-suite image was treated as a monolithic development image that was never intended to be pulled from directly, at least outside of the `dfi` build system. hledger-suite has now been parsed out into separate build targets for faster maintenance and development, with the final production image being a massively slimmer "placeholder" image for the built binaries. `hledger-suite:latest` can now be pulled from directly without pulling the entire build system and related artifacts. --- .../remote/hledger-suite/Dockerfile | 16 ++++++++++- .../remote/hledger-suite/docker-compose.yml | 27 +++++++++++++++++-- 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/client/Dockerfiles/remote/hledger-suite/Dockerfile b/client/Dockerfiles/remote/hledger-suite/Dockerfile index cf02d5a..be6fa55 100644 --- a/client/Dockerfiles/remote/hledger-suite/Dockerfile +++ b/client/Dockerfiles/remote/hledger-suite/Dockerfile @@ -15,7 +15,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -FROM haskell:9.12.2 +FROM haskell:9.12.2 AS haskell-build RUN apt-get update -y RUN apt-get upgrade -y @@ -24,6 +24,8 @@ RUN apt-get upgrade -y # hledger-flow # +FROM haskell-build AS hledger-flow + WORKDIR /usr/local/src RUN git clone --depth=1 https://github.com/apauley/hledger-flow -b v0.16.0 @@ -37,6 +39,8 @@ RUN stack install --local-bin-path=/usr/local/bin # hledger-iadd # +FROM hledger-flow AS hledger-iadd + WORKDIR /usr/local/src RUN git clone --depth=1 https://github.com/hpdeifel/hledger-iadd -b v1.3.22 @@ -51,6 +55,8 @@ RUN cabal v1-copy # hledger / hledger-ui / hledger-web # +FROM hledger-iadd AS hledger + WORKDIR /usr/local/src RUN git clone --depth=1 https://github.com/simonmichael/hledger -b 1.51.1 @@ -59,4 +65,12 @@ RUN stack setup RUN stack install --stack-yaml=stack.yaml --dependencies-only RUN stack install --stack-yaml=stack.yaml --local-bin-path=/usr/local/bin +# +# Production stage +# + +FROM debian:stable-slim AS hledger-suite + +COPY --from=hledger /usr/local/bin/hledger* /usr/local/bin/ + # vim: sw=2 sts=2 si ai et diff --git a/client/Dockerfiles/remote/hledger-suite/docker-compose.yml b/client/Dockerfiles/remote/hledger-suite/docker-compose.yml index c208fb9..450f71f 100644 --- a/client/Dockerfiles/remote/hledger-suite/docker-compose.yml +++ b/client/Dockerfiles/remote/hledger-suite/docker-compose.yml @@ -1,6 +1,6 @@ # docker-finance | modern accounting for the power-user # -# Copyright (C) 2024 Aaron Fiore (Founder, Evergreen Crypto LLC) +# Copyright (C) 2024-2025 Aaron Fiore (Founder, Evergreen Crypto LLC) # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -19,6 +19,29 @@ services: hledger-suite: image: evergreencrypto/hledger-suite:latest container_name: evergreencrypto_hledger-suite - build: . + build: + context: . + target: hledger-suite + + hledger: + image: evergreencrypto/hledger:build + container_name: evergreencrypto_hledger + build: + context: . + target: hledger + + hledger-iadd: + image: evergreencrypto/hledger-iadd:build + container_name: evergreencrypto_hledger-iadd + build: + context: . + target: hledger-iadd + + hledger-flow: + image: evergreencrypto/hledger-flow:build + container_name: evergreencrypto_hledger-flow + build: + context: . + target: hledger-flow # vim: sw=2 sts=2 si ai et