# 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 # Remove default `ubuntu` user which may conflict with host user's UID/GID (1000:1000) RUN userdel -r ubuntu # Add `dev-tools` user RUN useradd -m -s /bin/bash @DOCKER_FINANCE_USER@ -u @DOCKER_FINANCE_UID@ RUN gpasswd -a @DOCKER_FINANCE_USER@ wheel # System-level user for building (won't pollute user-level UID space) RUN useradd -m -s /bin/bash -r builder && gpasswd -a builder wheel RUN gpasswd -a builder wheel RUN apt-get update -y # # `dev-tools` Linters # # Bash RUN apt-get install -y shfmt shellcheck # C++ RUN apt-get install -y clang-format cppcheck cpplint # PHP RUN apt-get install -y composer USER @DOCKER_FINANCE_USER@ WORKDIR /home/@DOCKER_FINANCE_USER@ RUN composer global require -n --dev friendsofphp/php-cs-fixer RUN composer global require -n --dev phpstan/phpstan RUN echo "export PATH=\"\${PATH}:\${HOME}/.composer/vendor/bin\"" | tee -a ~/.bash_aliases # # `finance` dependencies (fetch APIs) # USER root RUN apt-get install -y php php-bcmath php-curl php-gmp USER builder WORKDIR /usr/local/lib/php RUN composer require ozdemirburak/json-csv RUN composer require ccxt/ccxt # "Sunsetted" Coinbase Pro RUN composer require mocking-magician/coinbase-pro-sdk # Allow real-time editing of libraries (useful for debugging) USER root RUN chown -R :wheel /usr/local/lib/php && chmod g+rwx /usr/local/lib/php # # `dev-tools` misc. # # Doxygen RUN apt-get install -y doxygen graphviz # # Client-side `version` command # RUN apt-get install -y yq # # Entrypoint # 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