# 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 . services: docker-finance: image: @DOCKER_FINANCE_IMAGE@ container_name: @DOCKER_FINANCE_CONTAINER@ build: . # NOTE: env bind mounts are used exclusively because volumes should be # reserved for persistant data that the *container* generates/needs. # In docker-finance, the container and client (host) are largely transparent # and treated as one (and dangling volumes are not desired). volumes: - ${DOCKER_FINANCE_CLIENT_CONF}/container:${DOCKER_FINANCE_CONTAINER_CONF} - ${DOCKER_FINANCE_CLIENT_FLOW}:${DOCKER_FINANCE_CONTAINER_FLOW} - ${DOCKER_FINANCE_CLIENT_REPO}/container:${DOCKER_FINANCE_CONTAINER_REPO}:ro - ${DOCKER_FINANCE_CLIENT_SHARED}:${DOCKER_FINANCE_CONTAINER_SHARED} # Needed for when upstream data is localtime instead of UTC # NOTE: although TZ can be used within the container, this *should* be more dynamic - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro environment: - DOCKER_FINANCE_CONTAINER_CMD=${DOCKER_FINANCE_CONTAINER_CMD} - DOCKER_FINANCE_CONTAINER_CONF=${DOCKER_FINANCE_CONTAINER_CONF} - DOCKER_FINANCE_CONTAINER_EDITOR=${DOCKER_FINANCE_CONTAINER_EDITOR} - DOCKER_FINANCE_CONTAINER_FLOW=${DOCKER_FINANCE_CONTAINER_FLOW} - DOCKER_FINANCE_CONTAINER_REPO=${DOCKER_FINANCE_CONTAINER_REPO} - DOCKER_FINANCE_CONTAINER_SHARED=${DOCKER_FINANCE_CONTAINER_SHARED} - DOCKER_FINANCE_DEBUG=${DOCKER_FINANCE_DEBUG} - GID=${DOCKER_FINANCE_GID} - UID=${DOCKER_FINANCE_UID} # Container's view of client's hledger-flow (for logging purposes) - DOCKER_FINANCE_CLIENT_FLOW=${DOCKER_FINANCE_CLIENT_FLOW} deploy: resources: limits: cpus: ${DOCKER_FINANCE_CPUS} memory: ${DOCKER_FINANCE_MEMORY} # TODO: As of `archlinux v20240201.0.210909 (docker image)` (or later) and # `hledger 1.32.1` (or later), "get_mempolicy: Operation not permitted" # is spammed w/ every hledger command (hledger / hledger-*). I don't know # if this is a haskell-build issue or a hledger/hledger dependency issue but # the error is only reproducible inside a docker container when issuing # hledger commands. Adding SYS_NICE here removes the error spam but it's # otherwise not a capability that's needed (so, resolve this upstream). cap_add: - SYS_NICE restart: no init: true networks: docker-finance: ports: - ${DOCKER_FINANCE_PORT_HLEDGER}:5000 - ${DOCKER_FINANCE_PORT_ROOT}:8080 networks: docker-finance: external: true name: @DOCKER_FINANCE_NETWORK@ # vim: sw=2 sts=2 si ai et