From 121bf4f302b02db5f1c2d02adc6ff7990092b980 Mon Sep 17 00:00:00 2001 From: Magnus F Date: Fri, 22 Nov 2024 10:21:21 +0100 Subject: [PATCH] feat: Add Docker builder (#82) Adds: - Basic Dockerfile that builds diagon and exposes the binary in a small-ish image (~80MB). - README section for building and running the image. --- Dockerfile | 19 +++++++++++++++++++ README.md | 14 ++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..4340b22 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,19 @@ +FROM ubuntu:24.04 AS builder + +ARG ANTLR_VERSION=4.13.2 +ENV ANTLR_VERSION=$ANTLR_VERSION + +RUN apt update && \ + apt install -y make libboost-graph-dev cmake default-jdk git g++ wget +COPY . /Diagon +RUN mkdir -p Diagon/build && \ + cd Diagon/build && \ + cmake .. -DCMAKE_BUILD_TYPE=Release && \ + wget -O antlr.jar https://www.antlr.org/download/antlr-$ANTLR_VERSION-complete.jar && \ + make -j install + +FROM ubuntu:24.04 AS runner +COPY --from=builder /usr/local/bin/diagon /usr/local/bin/diagon +RUN useradd -u 1101 diagon +USER 1101 +ENTRYPOINT [ "diagon" ] diff --git a/README.md b/README.md index efd6cc4..78035ba 100644 --- a/README.md +++ b/README.md @@ -647,6 +647,20 @@ cmake .. -DCMAKE_BUILD_TYPE=Release make -j sudo make install ``` + +## Build in Docker + +If you have Docker installed, the repository includes a Dockerfile for convenient building: +```sh +docker build -t diagon . +``` + +Once built, the image can be invoked like the binary: +```sh +docker run diagon Math -- "f(x) = 1 + x / (1 + x)" + +echo "f(x) = 1 + x / (1 + x)" | docker run -i diagon Math +``` # Packaging status