#!/bin/bash # 2023-08-09 # ---------------------------------- # Pterodactyl Core Dockerfile Builder # Environment: Java / GraalVM # Minimum Panel Version: 1.7.0 # ---------------------------------- clear cd "$(dirname "$0")" || exit 1 # Define what version of GraalVM GRAALVM_YEAR_VERSION=20 GRAALVM_MAJOR_VERSION=0 GRAALVM_MINOR_VERSION=2 JAVA_VERSION=20 JAVA_HOME=/opt/graalvm # Setup for SDKMAN! GRAALVERSION=$GRAALVM_YEAR_VERSION.$GRAALVM_MAJOR_VERSION.$GRAALVM_MINOR_VERSION-graal SDKMAN=/root/.sdkman # Docker image name and version IMAGE_BASE=zogg/graalvm IMAGE_NAME_LATEST=${IMAGE_BASE}:latest # Update GraalVM version in relevant files find="GRAALVERSION" replace="$GRAALVERSION" sed "s/${find}/${replace}/g" files/_bashrc > files/bashrc sed "s/${find}/${replace}/g" files/_docker-java-home > files/docker-java-home sed "s/${find}/${replace}/g" files/_entrypoint.sh > files/entrypoint.sh # Prepare for cross compile export DOCKER_DEFAULT_PLATFORM=linux/amd64 export DOCKER_CLI_EXPERIMENTAL=enabled docker run --privileged --rm tonistiigi/binfmt --install all # Build with no caching disabled docker buildx build --pull --no-cache \ --platform=linux/amd64 \ --output=type=docker \ --build-arg TZ=Europe/Paris \ --build-arg CONCURRENCY=$(nproc) \ --build-arg GRAALVERSION=${GRAALVERSION} \ --build-arg SDKMAN=${SDKMAN} \ --build-arg GRAALVM_YEAR_VERSION=${GRAALVM_YEAR_VERSION} \ --build-arg GRAALVM_MAJOR_VERSION=${GRAALVM_MAJOR_VERSION} \ --build-arg GRAALVM_MINOR_VERSION=${GRAALVM_MINOR_VERSION} \ --build-arg JAVA_VERSION=${JAVA_VERSION} \ --build-arg JAVA_HOME=${JAVA_HOME} \ -t "${IMAGE_NAME_LATEST}" \ . 2>&1 | tee build.log exit 0