diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..a515917 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,9 @@ +.git +**/target +eval/ +.cursor/ +*.iml +.idea/ +.vscode/ +.DS_Store +**/.DS_Store diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..66ee760 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,18 @@ +FROM ubuntu:24.04 + +ENV DEBIAN_FRONTEND=noninteractive + +# Java 8 first. Installing maven in the same apt command pulls OpenJDK 11. +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + openjdk-8-jdk wget zstd netcat-openbsd \ + && apt-get install -y --no-install-recommends maven \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /estore +COPY . . + +RUN ./s install_estore + +EXPOSE 1234 +CMD ["/bin/bash"] diff --git a/README.md b/README.md index df3afef..6998c5e 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,21 @@ is a table of references to objects on the heap, which users can manipulate the same way as any other object on the heap in their programs. +## Docker + +If you want to run in an isolated container, skip installing Java, +Maven, and the other tools in Prerequisites. Docker installs those +dependencies and ϵStore during the build. Start a shell with: + +```bash +docker build -t estore . +docker run --rm -it -p 1234:1234 estore +``` + +Port 1234 is mapped to the host. Inside the container, run +`./s exec_estore` and query the server as described under Running the +Application. + ## Examples 1. Capturing a Java object graph and querying it with Cypher-like syntax.