diff --git a/docker/README.md b/docker/README.md index bef40454b..4bfca2801 100644 --- a/docker/README.md +++ b/docker/README.md @@ -1,11 +1,28 @@ -## Build instructions +## Instructions -Build slim container with binaries only +Build slim container with binaries only: ``` -docker image build --rm --tag hledger . +./build.sh ``` -Build container suitable for development +Build container suitable for development: ``` -docker image build --tag hledger --target dev . +./build-dev.sh ``` + +Run hledger-web in the container: +``` +./run.sh /path/to/your.journal web +``` + +Run shell in the container (your files will be in /data): +``` +./run.sh /path/to/your.journal bash +``` + +Run hledger command in the container: +``` +./run.sh /path/to/your.journal hledger [ARGS] +``` + +Script `start.sh` is included inside container and used to start `hledger-web`, there is no need to run it manually. diff --git a/docker/build-dev.sh b/docker/build-dev.sh new file mode 100755 index 000000000..c532eca68 --- /dev/null +++ b/docker/build-dev.sh @@ -0,0 +1,3 @@ +#!/bin/sh +cd `git rev-parse --show-toplevel` +docker image build --tag hledger --target dev . diff --git a/docker/build.sh b/docker/build.sh new file mode 100755 index 000000000..fd51833a5 --- /dev/null +++ b/docker/build.sh @@ -0,0 +1,3 @@ +#!/bin/sh +cd `git rev-parse --show-toplevel` +docker image build --rm --tag hledger . diff --git a/docker/run.sh b/docker/run.sh new file mode 100755 index 000000000..7ade88548 --- /dev/null +++ b/docker/run.sh @@ -0,0 +1,28 @@ +#!/bin/bash +set -e -o pipefail + +function usage() { + echo "USAGE: $0 /path/to/hledger.journal [web|bash|hledger [hledger-args]]" +} + +journal=$(readlink -f "$1") +shift +[ -f "$journal" ] || { usage; exit 1; } +dir=$(dirname $journal) +file=$(basename $journal) + +cmd="$1" +shift + +case "$cmd" in + web) extra_args="" ;; + bash) extra_args="bash" ;; + hledger) extra_args="hledger" ;; + *)usage; exit 1 ;; +esac + +docker container run --rm -it --volume "$dir:/data" \ + --env HLEDGER_FILE_NAME=/data/$file \ + --env LEDGER_FILE=/data/$file \ + -p 5000:5000 -p 5001:5001 \ + hledger $extra_args "$@"