# docker-finance | modern accounting for the power-user # # Copyright (C) 2021-2024 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 # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . FROM ubuntu:rolling # # System # RUN groupadd -r wheel # `finance` user RUN useradd -m -s /bin/bash @DOCKER_FINANCE_USER@ -u @DOCKER_FINANCE_UID@ # System-level user for building (won't pollute user-level UID space) RUN useradd -m -s /bin/bash -r builder # # Dependencies # RUN apt update -y # Minimum requirements RUN apt install -y \ bc \ cargo \ composer \ gawk \ ghc \ git \ haskell-stack \ hledger \ hledger-ui \ hledger-web \ php \ php-bcmath \ php-curl \ php-gmp \ pipx \ vim \ visidata \ zlib1g-dev RUN cargo install xsv --root /usr # Optional requirements (ROOT) # TODO: the .deb for root does not exist yet #RUN apt install -y root #RUN apt install -y botan libcrypto++-dev libsodium-dev googletest libbenchmark-dev # Optional userspace RUN apt install -y \ calc \ emacs-nox \ mc \ nano # Give access to builder RUN gpasswd -a builder wheel RUN chown root:wheel /usr/local/* && chmod g+rwx /usr/local/* # hledger-flow # TODO: upstream-integrate with hledger? packaged somewhere? would like to not have to clone and build here... USER builder WORKDIR /usr/local/src RUN git clone --depth=1 https://github.com/apauley/hledger-flow -b v0.15.0 WORKDIR /usr/local/src/hledger-flow RUN stack setup RUN stack build RUN stack test --interleaved-output --pedantic RUN stack install --local-bin-path=/usr/local/bin # Fetch APIs # NOTE: Coinbase Pro has been "sunsetted" WORKDIR /usr/local/lib/php #RUN composer require mocking-magician/coinbase-pro-sdk RUN composer require ozdemirburak/json-csv RUN composer require codenix-sv/coingecko-api RUN composer require ccxt/ccxt # Minimum requirements (python) USER @DOCKER_FINANCE_USER@ WORKDIR /home/@DOCKER_FINANCE_USER@ RUN pipx install shyaml RUN pipx install csvkit # Optional userspace (python) #RUN pipx install xlsx2csv # Superscript RUN echo "source \"\${DOCKER_FINANCE_CONTAINER_CONF}/shell/superscript.bash\"" | tee -a ~/.bash_aliases # # Entrypoint # USER root COPY ./entrypoint.bash /entrypoint.bash RUN chmod a+rx /entrypoint.bash USER @DOCKER_FINANCE_USER@ WORKDIR /home/@DOCKER_FINANCE_USER@ ENTRYPOINT ["/entrypoint.bash"] # vim: sw=2 sts=2 si ai et