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
|
||||
ARG BABASHKA_XMX="-J-Xmx3g"
|
||||
|
||||
RUN apt update
|
||||
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 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 JAVA_HOME="/opt/graalvm-ce-java11-20.2.0/bin"
|
||||
ENV PATH="$JAVA_HOME:$PATH"
|
||||
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 . .
|
||||
RUN ./script/uberjar
|
||||
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
|
||||
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
|
||||
|
||||
Run `script\uberjar.bat` followed by `script\compile.bat`.
|
||||
|
|
|
|||
Loading…
Reference in a new issue