Docs: how to build in docker + features support (#643)
1. Explain how to build `bb` for linux using docker. 2. Add support for setting the various `BABASHKA_FEATURE_*` when doing docker build via `--build-arg`.
This commit is contained in:
parent
d45430fbf1
commit
41ede17be0
2 changed files with 55 additions and 1 deletions
38
Dockerfile
38
Dockerfile
|
|
@ -1,5 +1,4 @@
|
||||||
FROM clojure:lein-2.9.1 AS BASE
|
FROM clojure:lein-2.9.1 AS BASE
|
||||||
ARG BABASHKA_XMX="-J-Xmx3g"
|
|
||||||
|
|
||||||
RUN apt update
|
RUN apt update
|
||||||
RUN apt install --no-install-recommends -yy curl unzip build-essential zlib1g-dev
|
RUN apt install --no-install-recommends -yy curl unzip build-essential zlib1g-dev
|
||||||
|
|
@ -7,11 +6,48 @@ WORKDIR "/opt"
|
||||||
RUN curl -sLO https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.2.0/graalvm-ce-java11-linux-amd64-20.2.0.tar.gz
|
RUN curl -sLO https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.2.0/graalvm-ce-java11-linux-amd64-20.2.0.tar.gz
|
||||||
RUN tar -xzf graalvm-ce-java11-linux-amd64-20.2.0.tar.gz
|
RUN tar -xzf graalvm-ce-java11-linux-amd64-20.2.0.tar.gz
|
||||||
|
|
||||||
|
ARG BABASHKA_XMX="-J-Xmx3g"
|
||||||
|
|
||||||
ENV GRAALVM_HOME="/opt/graalvm-ce-java11-20.2.0"
|
ENV GRAALVM_HOME="/opt/graalvm-ce-java11-20.2.0"
|
||||||
ENV JAVA_HOME="/opt/graalvm-ce-java11-20.2.0/bin"
|
ENV JAVA_HOME="/opt/graalvm-ce-java11-20.2.0/bin"
|
||||||
ENV PATH="$JAVA_HOME:$PATH"
|
ENV PATH="$JAVA_HOME:$PATH"
|
||||||
ENV BABASHKA_XMX=$BABASHKA_XMX
|
ENV BABASHKA_XMX=$BABASHKA_XMX
|
||||||
|
|
||||||
|
# Make it possible to use Docker to build bb with a particular set of features
|
||||||
|
# by setting them at build time via `docker build --build-arg ARG_NAME=true ...`
|
||||||
|
ARG BABASHKA_LEAN=
|
||||||
|
ARG BABASHKA_FEATURE_CORE_ASYNC=
|
||||||
|
ARG BABASHKA_FEATURE_CSV=
|
||||||
|
ARG BABASHKA_FEATURE_JAVA_NIO=
|
||||||
|
ARG BABASHKA_FEATURE_JAVA_TIME=
|
||||||
|
ARG BABAHSKA_FEATURE_TRANSIT=
|
||||||
|
ARG BABASHKA_FEATURE_XML=
|
||||||
|
ARG BABASHKA_FEATURE_YAML=
|
||||||
|
ARG BABASHKA_FEATURE_HTTPKIT_CLIENT=
|
||||||
|
ARG BABASHKA_FEATURE_HTTPKIT_SERVER=
|
||||||
|
ARG BABASHKA_FEATURE_JDBC=
|
||||||
|
ARG BABASHKA_FEATURE_POSTGRESQL=
|
||||||
|
ARG BABASHKA_FEATURE_HSQLDB=
|
||||||
|
ARG BABASHKA_FEATURE_ORACLEDB=
|
||||||
|
ARG BABASHKA_FEATURE_DATASCRIPT=
|
||||||
|
ARG BABASHKA_FEATURE_LANTERNA=
|
||||||
|
ENV BABASHKA_LEAN=$BABASHKA_LEAN
|
||||||
|
ENV BABASHKA_FEATURE_CORE_ASYNC=$BABASHKA_FEATURE_CORE_ASYNC
|
||||||
|
ENV BABASHKA_FEATURE_CSV=$BABASHKA_FEATURE_CSV
|
||||||
|
ENV BABASHKA_FEATURE_JAVA_NIO=$BABASHKA_FEATURE_JAVA_NIO
|
||||||
|
ENV BABASHKA_FEATURE_JAVA_TIME=$BABASHKA_FEATURE_JAVA_TIME
|
||||||
|
ENV BABAHSKA_FEATURE_TRANSIT=$BABAHSKA_FEATURE_TRANSIT
|
||||||
|
ENV BABASHKA_FEATURE_XML=$BABASHKA_FEATURE_XML
|
||||||
|
ENV BABASHKA_FEATURE_YAML=$BABASHKA_FEATURE_YAML
|
||||||
|
ENV BABASHKA_FEATURE_HTTPKIT_CLIENT=$BABASHKA_FEATURE_HTTPKIT_CLIENT
|
||||||
|
ENV BABASHKA_FEATURE_HTTPKIT_SERVER=$BABASHKA_FEATURE_HTTPKIT_SERVER
|
||||||
|
ENV BABASHKA_FEATURE_JDBC=$BABASHKA_FEATURE_JDBC
|
||||||
|
ENV BABASHKA_FEATURE_POSTGRESQL=$BABASHKA_FEATURE_POSTGRESQL
|
||||||
|
ENV BABASHKA_FEATURE_HSQLDB=$BABASHKA_FEATURE_HSQLDB
|
||||||
|
ENV BABASHKA_FEATURE_ORACLEDB=$BABASHKA_FEATURE_ORACLEDB
|
||||||
|
ENV BABASHKA_FEATURE_DATASCRIPT=$BABASHKA_FEATURE_DATASCRIPT
|
||||||
|
ENV BABASHKA_FEATURE_LANTERNA=$BABASHKA_FEATURE_LANTERNA
|
||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
RUN ./script/uberjar
|
RUN ./script/uberjar
|
||||||
RUN ./script/compile
|
RUN ./script/compile
|
||||||
|
|
|
||||||
18
doc/build.md
18
doc/build.md
|
|
@ -60,6 +60,24 @@ $ export BABASHKA_XMX="-J-Xmx6500m"
|
||||||
Note: setting the max heap size to a low value can cause the build to crash or
|
Note: setting the max heap size to a low value can cause the build to crash or
|
||||||
take long to complete.
|
take long to complete.
|
||||||
|
|
||||||
|
### Alternative: Build inside Docker
|
||||||
|
|
||||||
|
To build a Linux version of babashka, you can use `docker build`, enabling the
|
||||||
|
desired features via `--build-arg` like this:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
docker build --build-arg BABASHKA_FEATURE_JDBC=true --target BASE -t bb-builder .
|
||||||
|
container_id=$(docker create bb-builder)
|
||||||
|
docker cp $container_id:/opt/bb bb # copy to ./bb on the host file system
|
||||||
|
docker rm $container_id
|
||||||
|
```
|
||||||
|
|
||||||
|
NOTE: If you get _Error: Image build request failed with exit status 137_ then
|
||||||
|
check whether Docker is allowed to use enough memory (e.g. in Docker Desktop
|
||||||
|
preferences). If it is, then increase the memory GraalVM can use, for example
|
||||||
|
by adding `--build-arg BABASHKA_XMX="-J-Xmx8g"`
|
||||||
|
(or whatever Docker has available, bigger than the default).
|
||||||
|
|
||||||
## Windows
|
## Windows
|
||||||
|
|
||||||
Run `script\uberjar.bat` followed by `script\compile.bat`.
|
Run `script\uberjar.bat` followed by `script\compile.bat`.
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue