Skip to content

Instantly share code, notes, and snippets.

@RawSanj
Created December 9, 2021 13:44
Show Gist options
  • Save RawSanj/179e7c1a658a38d82096752989a3534a to your computer and use it in GitHub Desktop.
Save RawSanj/179e7c1a658a38d82096752989a3534a to your computer and use it in GitHub Desktop.
FROM amazonlinux:latest AS graalvm
ENV LANG=en_US.UTF-8
RUN yum install -y gcc gcc-c++ libc6-dev zlib1g-dev curl bash zlib zlib-devel zlib-static zip tar gzip
RUN curl -4 -L https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-21.2.0/graalvm-ce-java11-linux-amd64-21.2.0.tar.gz -o /tmp/graalvm-ce-java11-linux-amd64-21.2.0.tar.gz
RUN tar -zxf /tmp/graalvm-ce-java11-linux-amd64-21.2.0.tar.gz -C /tmp && mv /tmp/graalvm-ce-java11-21.2.0 /usr/lib/graalvm
RUN rm -rf /tmp/*
RUN /usr/lib/graalvm/bin/gu install native-image
CMD ["/usr/lib/graalvm/bin/native-image"]
ENV PATH=/usr/lib/graalvm/bin:${PATH}
FROM graalvm AS builder
WORKDIR /home/app
COPY layers/libs /home/app/libs
COPY layers/resources /home/app/resources
COPY layers/application.jar /home/app/application.jar
RUN native-image -H:Class=io.micronaut.function.aws.runtime.MicronautLambdaRuntime -H:Name=application -H:ConfigurationFileDirectories=/home/app/resources --no-fallback -cp /home/app/libs/*.jar:/home/app/resources:/home/app/application.jar
FROM amazonlinux:latest
WORKDIR /function
RUN yum install -y zip
COPY --from=builder /home/app/application /function/func
RUN echo "#!/bin/sh" >> bootstrap && echo "set -euo pipefail" >> bootstrap && echo "./func -Djava.library.path=$(pwd)" >> bootstrap
RUN chmod 777 bootstrap
RUN chmod 777 func
RUN zip -j function.zip bootstrap func
ENTRYPOINT ["/function/func"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment