package: added Dockerfile

This commit is contained in:
Dmitry Astapov 2019-01-26 00:46:11 +00:00 committed by Simon Michael
parent 5bb20fcdec
commit c719eb7c67
4 changed files with 72 additions and 0 deletions

1
.dockerignore Normal file
View File

@ -0,0 +1 @@
**/.stack-work

41
Dockerfile Normal file
View File

@ -0,0 +1,41 @@
FROM debian:stable-slim as dev
RUN apt-get update
RUN apt-get install -y curl libtinfo-dev
RUN (curl -sSL https://get.haskellstack.org/ | sh)
RUN mkdir /root/hledger
WORKDIR /root/hledger
# Install GHC
COPY ./stack*.yaml ./
RUN stack setup
# Pre-cache dependencies
RUN mkdir hledger-lib hledger hledger-ui hledger-web hledger-api
COPY hledger-lib/package.yaml hledger-lib/package.yaml
COPY hledger/package.yaml hledger/package.yaml
COPY hledger-ui/package.yaml hledger-ui/package.yaml
COPY hledger-web/package.yaml hledger-web/package.yaml
COPY hledger-api/package.yaml hledger-api/package.yaml
RUN stack install --dependencies-only
# Actually compile sources
COPY . .
RUN stack install
FROM debian:stable-slim
RUN apt-get update && apt-get install libgmp10 && rm -rf /var/lib/apt/lists
COPY --from=dev /root/.local/bin/hledger* /usr/bin/
ENV LC_ALL C.UTF-8
RUN mkdir /data && touch /data/hledger.journal
VOLUME /data
EXPOSE 5000 5001
COPY docker/start.sh /start.sh
CMD ["/start.sh"]

11
docker/README.md Normal file
View File

@ -0,0 +1,11 @@
## Build instructions
Build slim container with binaries only
```
docker image build --rm --tag hledger .
```
Build container suitable for development
```
docker image build --tag hledger --target dev .
```

19
docker/start.sh Executable file
View File

@ -0,0 +1,19 @@
#!/bin/bash
echo "host: ${HLEDGER_HOST:=0.0.0.0}"
echo "port: ${HLEDGER_PORT:=5000}"
echo "base url: ${HLEDGER_BASE_URL:="http://localhost:$HLEDGER_PORT"}"
echo "file url: ${HLEDGER_FILE_URL:=}"
echo "input file: ${HLEDGER_JOURNAL_FILE:=/data/hledger.journal}"
echo "debug level: ${HLEDGER_DEBUG:=1}"
echo "rules file: ${HLEDGER_RULES_FILE:=/data/hledger.rules}"
exec hledger-web \
--server \
--host=$HLEDGER_HOST \
--port=$HLEDGER_PORT \
--file "$HLEDGER_JOURNAL_FILE" \
--debug=$HLEDGER_DEBUG \
--base-url=$HLEDGER_BASE_URL \
--file-url=$HLEDGER_FILE_URL \
--rules-file="$HLEDGER_RULES_FILE"