From 10bd21c13b3e8f70d6b71f2a118c6f3a00615a46 Mon Sep 17 00:00:00 2001 From: uzurka Date: Mon, 14 Aug 2023 00:14:42 +0200 Subject: [PATCH] lighter Dockerfile --- Dockerfile | 139 +++++++------------------------------------------ Dockerfile_old | 127 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 147 insertions(+), 119 deletions(-) create mode 100644 Dockerfile_old diff --git a/Dockerfile b/Dockerfile index f004413..07f8b82 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,127 +1,28 @@ -# ---------------------------------- -# Pterodactyl Core Dockerfile -# Environment: Java -# Minimum Panel Version: 1.7.0 -# ---------------------------------- -# Copyright (c) 2021 Matthew Penner -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. -# ---------------------------------- +FROM alpine:3.14 -# 2023-08-09 +ARG GRAALVERSION +ARG SDKMAN -FROM debian:stable-slim +COPY platform.sh /platform.sh +RUN chmod +x /platform.sh && /platform.sh -ARG TARGETPLATFORM -ARG TARGETOS -ARG TARGETARCH -ARG BUILDPLATFORM -ARG BUILDOS -ARG BUILDARCH -ARG BUILDVARIANT +RUN apk update && apk upgrade && \ + apk add --no-cache curl ca-certificates bash tzdata fontconfig -ARG GRAALVERSION -ARG SDKMAN -ARG GRAALVM_YEAR_VERSION -ARG GRAALVM_MAJOR_VERSION -ARG GRAALVM_MINOR_VERSION -ARG JAVA_VERSION -ARG JAVA_HOME +RUN curl -s "https://get.sdkman.io" | bash && \ + source "$SDKMAN/bin/sdkman-init.sh" && \ + sdk install java $GRAALVERSION && \ + sdk flush -COPY platform.sh . -RUN chmod +x ./platform.sh \ - && ./platform.sh +ENV LANG C.UTF-8 -SHELL ["/bin/bash", "-c"] - -LABEL org.opencontainers.image.title "GraalVM Enterprise Edition" -LABEL org.opencontainers.image.authors "GraalVM Sustaining Team " -LABEL org.opencontainers.image.description "GraalVM is a universal virtual machine for running applications written in JavaScript, Python, Ruby, R, JVM-based languages like Java, Scala, Clojure, Kotlin, and LLVM-based languages such as C and C++." - -LABEL com.centurylinklabs.watchtower.enable false -LABEL org.opencontainers.image.licenses MIT - -LABEL author "Olivier Le Bris" -LABEL maintainer "tech@zogg.fr" -LABEL org.opencontainers.image.source "https://zogg.fr" - -ENV GRAALVERSION $GRAALVERSION -ENV LANG C.UTF-8 -ENV GRAALVM_YEAR_VERSION $GRAALVM_YEAR_VERSION -ENV GRAALVM_MAJOR_VERSION $GRAALVM_MAJOR_VERSION -ENV GRAALVM_MINOR_VERSION $GRAALVM_MINOR_VERSION -ENV JAVA_VERSION $JAVA_VERSION -ENV JAVA_HOME $JAVA_HOME -ENV PATH $JAVA_HOME/bin:${PATH} - -USER root -WORKDIR / - -# Install neccessary packages -RUN set -eux \ - && apt update \ - && apt full-upgrade -y \ - && apt install curl ca-certificates p11-kit openssl tar sqlite3 fontconfig tzdata iproute2 libstdc++-11-dev bash wget zip unzip -y \ - && apt autoremove -y - -# Setup 'container' user and group (with home folder) -RUN useradd -d /home/container -m container -s /bin/bash -p 'none' \ - && passwd -d container - -# Install SDKMAN! and GraalVM specified version -RUN curl -s "https://get.sdkman.io" | bash \ - && source "$SDKMAN/bin/sdkman-init.sh" \ - && sdk install java $GRAALVERSION - -# Copy GraalVM files to destination folder -RUN mkdir -p /opt/graalvm \ - && cp -rf $SDKMAN/candidates/java/$GRAALVERSION/. /opt/graalvm/ \ - && chown -R container:container /opt/graalvm - -# Setup GraalVM as default Java interpreter -USER root -WORKDIR /app -RUN mkdir -p /usr/java \ - && ln -sf /opt/graalvm /usr/java/default \ - && ln -sf /opt/graalvm /usr/java/latest \ - && for bin in "/opt/graalvm/bin/"*; do base="$(basename "$bin")"; \ - [ ! -e "/usr/bin/$base" ]; \ - update-alternatives --install "/usr/bin/$base" "$base" "$bin" 20000; \ - done - -# Uninstall SDKMAN! and do some cleanup -USER root -WORKDIR / -RUN source "$SDKMAN/bin/sdkman-init.sh" \ - && sdk uninstall java $GRAALVERSION --force \ - && sdk flush \ - && rm -rf $SDKMAN \ - && apt autoremove -y - -# Setup Pterodactyl necessary context -USER container +RUN adduser -D -h /home/container -s /bin/bash container +USER container WORKDIR /home/container -ENV USER container -ENV HOME /home/container -COPY _docker-java-home /usr/local/bin/docker-java-home -COPY _bashrc /home/container/.bashrc -COPY _entrypoint.sh /entrypoint.sh -# Run Pterodactyl entrypoint -CMD ["/bin/bash", "/entrypoint.sh"] \ No newline at end of file +COPY _docker-java-home /usr/local/bin/docker-java-home +COPY _bashrc /home/container/.bashrc +COPY _entrypoint.sh /entrypoint.sh + +# Commande d'entrée +CMD ["/bin/bash", "/entrypoint.sh"] \ No newline at end of file diff --git a/Dockerfile_old b/Dockerfile_old new file mode 100644 index 0000000..f004413 --- /dev/null +++ b/Dockerfile_old @@ -0,0 +1,127 @@ +# ---------------------------------- +# Pterodactyl Core Dockerfile +# Environment: Java +# Minimum Panel Version: 1.7.0 +# ---------------------------------- +# Copyright (c) 2021 Matthew Penner +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# ---------------------------------- + +# 2023-08-09 + +FROM debian:stable-slim + +ARG TARGETPLATFORM +ARG TARGETOS +ARG TARGETARCH +ARG BUILDPLATFORM +ARG BUILDOS +ARG BUILDARCH +ARG BUILDVARIANT + +ARG GRAALVERSION +ARG SDKMAN +ARG GRAALVM_YEAR_VERSION +ARG GRAALVM_MAJOR_VERSION +ARG GRAALVM_MINOR_VERSION +ARG JAVA_VERSION +ARG JAVA_HOME + +COPY platform.sh . +RUN chmod +x ./platform.sh \ + && ./platform.sh + +SHELL ["/bin/bash", "-c"] + +LABEL org.opencontainers.image.title "GraalVM Enterprise Edition" +LABEL org.opencontainers.image.authors "GraalVM Sustaining Team " +LABEL org.opencontainers.image.description "GraalVM is a universal virtual machine for running applications written in JavaScript, Python, Ruby, R, JVM-based languages like Java, Scala, Clojure, Kotlin, and LLVM-based languages such as C and C++." + +LABEL com.centurylinklabs.watchtower.enable false +LABEL org.opencontainers.image.licenses MIT + +LABEL author "Olivier Le Bris" +LABEL maintainer "tech@zogg.fr" +LABEL org.opencontainers.image.source "https://zogg.fr" + +ENV GRAALVERSION $GRAALVERSION +ENV LANG C.UTF-8 +ENV GRAALVM_YEAR_VERSION $GRAALVM_YEAR_VERSION +ENV GRAALVM_MAJOR_VERSION $GRAALVM_MAJOR_VERSION +ENV GRAALVM_MINOR_VERSION $GRAALVM_MINOR_VERSION +ENV JAVA_VERSION $JAVA_VERSION +ENV JAVA_HOME $JAVA_HOME +ENV PATH $JAVA_HOME/bin:${PATH} + +USER root +WORKDIR / + +# Install neccessary packages +RUN set -eux \ + && apt update \ + && apt full-upgrade -y \ + && apt install curl ca-certificates p11-kit openssl tar sqlite3 fontconfig tzdata iproute2 libstdc++-11-dev bash wget zip unzip -y \ + && apt autoremove -y + +# Setup 'container' user and group (with home folder) +RUN useradd -d /home/container -m container -s /bin/bash -p 'none' \ + && passwd -d container + +# Install SDKMAN! and GraalVM specified version +RUN curl -s "https://get.sdkman.io" | bash \ + && source "$SDKMAN/bin/sdkman-init.sh" \ + && sdk install java $GRAALVERSION + +# Copy GraalVM files to destination folder +RUN mkdir -p /opt/graalvm \ + && cp -rf $SDKMAN/candidates/java/$GRAALVERSION/. /opt/graalvm/ \ + && chown -R container:container /opt/graalvm + +# Setup GraalVM as default Java interpreter +USER root +WORKDIR /app +RUN mkdir -p /usr/java \ + && ln -sf /opt/graalvm /usr/java/default \ + && ln -sf /opt/graalvm /usr/java/latest \ + && for bin in "/opt/graalvm/bin/"*; do base="$(basename "$bin")"; \ + [ ! -e "/usr/bin/$base" ]; \ + update-alternatives --install "/usr/bin/$base" "$base" "$bin" 20000; \ + done + +# Uninstall SDKMAN! and do some cleanup +USER root +WORKDIR / +RUN source "$SDKMAN/bin/sdkman-init.sh" \ + && sdk uninstall java $GRAALVERSION --force \ + && sdk flush \ + && rm -rf $SDKMAN \ + && apt autoremove -y + +# Setup Pterodactyl necessary context +USER container +WORKDIR /home/container +ENV USER container +ENV HOME /home/container +COPY _docker-java-home /usr/local/bin/docker-java-home +COPY _bashrc /home/container/.bashrc +COPY _entrypoint.sh /entrypoint.sh + +# Run Pterodactyl entrypoint +CMD ["/bin/bash", "/entrypoint.sh"] \ No newline at end of file