FROM arm64v8/debian:12

RUN apt-get update -y &&\
  apt-get install --force-yes -y build-essential curl &&\
  apt-get install --force-yes -y libz-dev zlib1g-dev zlib1g

ENV GRAALVM_URL='https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-21.0.2/graalvm-community-jdk-21.0.2_linux-aarch64_bin.tar.gz'
RUN mkdir /graalvm &&\
  curl -L $GRAALVM_URL > /tmp/graalvm.tgz &&\
  tar --strip 1 -zxvf /tmp/graalvm.tgz -C /graalvm

ENV JAVA_HOME=/graalvm
ENV PATH="${PATH}:$JAVA_HOME/bin"
RUN uname -a && whoami && $JAVA_HOME/bin/java -version

WORKDIR /app/build
COPY ./build/artifacts/native-image-source/ /app/build

ENV JAVA_TOOL_OPTIONS='-Djdk.lang.Process.launchMechanism=fork'
RUN uname -m && ls -lha &&\
  native-image -H:PageSize=65536 -Djdk.lang.Process.launchMechanism=fork -J-Djdk.lang.Process.launchMechanism=fork \
  -jar dns-proxy-server.jar dns-proxy-server

RUN ls -lhS &&\
    mkdir -p ./artifacts/linux-aarch64 &&\
    mv ./dns-proxy-server ./artifacts/linux-aarch64/
ENTRYPOINT cat