# 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 . # https://hub.docker.com/_/archlinux FROM archlinux:base-devel # # System # # `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 # # Minimum requirements RUN pacman -Syu \ bc \ composer \ ghc \ git \ hledger \ hledger-iadd \ hledger-ui \ hledger-web \ python-pipx \ stack \ vim \ visidata \ xsv \ --noconfirm --disable-download-timeout # ROOT.cern (and docker-finance requirements) RUN pacman -Syu \ benchmark \ botan2 \ crypto++ \ gtest \ libsodium \ root \ --noconfirm --disable-download-timeout # PHP mandatory requirements RUN sed -i \ -e 's:^;extension=bcmath:extension=bcmath:' \ -e 's:^;extension=gmp:extension=gmp:' \ -e 's:^;extension=iconv:extension=iconv:' \ /etc/php/php.ini # 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 WORKDIR /usr/local/lib/php # NOTE: Coinbase Pro has been "sunsetted" #RUN composer require mocking-magician/coinbase-pro-sdk RUN composer require ozdemirburak/json-csv RUN composer require ccxt/ccxt USER root RUN sed -i \ -e 's:^;extension=bcmath:extension=bcmath:' \ -e 's:^;extension=gmp:extension=gmp:' \ -e 's:^;extension=iconv:extension=iconv:' \ /etc/php/php.ini # Minimum requirements (python) USER @DOCKER_FINANCE_USER@ WORKDIR /home/@DOCKER_FINANCE_USER@ RUN pipx install shyaml RUN pipx install csvkit # Superscript RUN echo "source \"\${DOCKER_FINANCE_CONTAINER_CONF}/shell/superscript.bash\"" | tee -a ~/.bashrc # # Entrypoint # USER root COPY ./entrypoint.bash /entrypoint.bash RUN chmod a+rx /entrypoint.bash USER @DOCKER_FINANCE_USER@ ENTRYPOINT ["/entrypoint.bash"] # vim: sw=2 sts=2 si ai et