forked from EvergreenCrypto/docker-finance
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.
This commit is contained in:
@@ -15,7 +15,7 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
FROM haskell:9.12.2
|
FROM haskell:9.12.2 AS haskell-build
|
||||||
|
|
||||||
RUN apt-get update -y
|
RUN apt-get update -y
|
||||||
RUN apt-get upgrade -y
|
RUN apt-get upgrade -y
|
||||||
@@ -24,6 +24,8 @@ RUN apt-get upgrade -y
|
|||||||
# hledger-flow
|
# hledger-flow
|
||||||
#
|
#
|
||||||
|
|
||||||
|
FROM haskell-build AS hledger-flow
|
||||||
|
|
||||||
WORKDIR /usr/local/src
|
WORKDIR /usr/local/src
|
||||||
RUN git clone --depth=1 https://github.com/apauley/hledger-flow -b v0.16.0
|
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
|
# hledger-iadd
|
||||||
#
|
#
|
||||||
|
|
||||||
|
FROM hledger-flow AS hledger-iadd
|
||||||
|
|
||||||
WORKDIR /usr/local/src
|
WORKDIR /usr/local/src
|
||||||
RUN git clone --depth=1 https://github.com/hpdeifel/hledger-iadd -b v1.3.22
|
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
|
# hledger / hledger-ui / hledger-web
|
||||||
#
|
#
|
||||||
|
|
||||||
|
FROM hledger-iadd AS hledger
|
||||||
|
|
||||||
WORKDIR /usr/local/src
|
WORKDIR /usr/local/src
|
||||||
RUN git clone --depth=1 https://github.com/simonmichael/hledger -b 1.51.1
|
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 --dependencies-only
|
||||||
RUN stack install --stack-yaml=stack.yaml --local-bin-path=/usr/local/bin
|
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
|
# vim: sw=2 sts=2 si ai et
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# docker-finance | modern accounting for the power-user
|
# 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
|
# 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
|
# it under the terms of the GNU General Public License as published by
|
||||||
@@ -19,6 +19,29 @@ services:
|
|||||||
hledger-suite:
|
hledger-suite:
|
||||||
image: evergreencrypto/hledger-suite:latest
|
image: evergreencrypto/hledger-suite:latest
|
||||||
container_name: evergreencrypto_hledger-suite
|
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
|
# vim: sw=2 sts=2 si ai et
|
||||||
|
|||||||
Reference in New Issue
Block a user