W celu zmiany wersji Javy dla serwera na panelu Pterodactyl, najlepiej jest utworzyć własny obraz.
Istotne jest zachowanie domyślnych ustawień, takich jak domyślny folder startu, aby uniknąć zbędnego procesu tworzenia własnego Egga z niestandardowymi ustawieniami.
Aby stworzyć własny obraz, utwórz nowy katalog, w którym umieścisz wymagane pliki.
Pierwszy to Dockerfile. Przesyłam zawartość mojego, współpracującego z domyślnymi ustawieniami serwera w panelu.
W moim przypadku jest to jre 12 od hotspotu.
FROM adoptopenjdk:12-jre-hotspot
RUN apt-get update -y \
&& apt-get install -y curl ca-certificates openssl git tar sqlite \
&& useradd -d /home/container -m container
USER container
ENV USER=container HOME=/home/container
USER container
ENV USER=container HOME=/home/container
WORKDIR /home/container
COPY ./entrypoint.sh /entrypoint.sh
CMD ["/bin/bash", "/entrypoint.sh"]
Następnie musisz utworzyć plik entrypoint.sh. U mnie wygląda w ten sposób:
#!/bin/bash
cd /home/container
# Output Current Java Version
java -version
export HEAP_SIZE=${SERVER_MEMORY}
export JAR_NAME=${SERVER_JARFILE}
export NURSERY_MINIMUM=$(($HEAP_SIZE / 2))
export NURSERY_MAXIMUM=$(($HEAP_SIZE * 4 / 5))
# Replace Startup Variables
MODIFIED_STARTUP=`eval echo $(echo ${STARTUP} | sed -e 's/{{/${/g' -e 's/}}/}/g')`
echo ":/home/container$ ${MODIFIED_STARTUP}"
# Run the Server
eval ${MODIFIED_STARTUP}
Jest on lekko zmodyfikowany. Co prawda nie przeze mnie, stąd nie wiem w czym lepsze jest używanie widocznych w nim wartości zamiast domyślnych parametrów (typu {{SERVER_MEMORY}}), ale działa i nie narzekam ;)
Po utworzeniu wymaganych plików należy zbudować obraz.
Jest to proste. Przechodzisz do folderu z powyższymi plikami i wykonujesz komendę:
docker build -t mojajava:1 ., gdzie mojajava to wybrana przez siebię nazwa obrazu, a 1 to jego wersja.
Aby użyć obrazu dla serwera w panelu, po prostu wpisz jego nazwę w polu Docker Container Configuration, w z akładce Startup. W przedstawionym przykładzie, byłoby to mojajava:1.
Jeśli chcesz, możesz użyć dodanych parametrów z pliku entrypoint. Nie jest to natomiast wymagane.
To wszystko, po zapisaniu ustawień zrestartuj serwer. Panel zbuduje go na nowym obrazie.