
- Bumped platform & dependencies from `bullseye-slim` to `bookworm-slim`. - Removed `numactl` package as it no longer seems required for SteamCMD to login correctly with real credentials. - Updated `EGG_URL` to point to the new repo. - Removed depreciated environment variables (see Egg changelog to see what has changed). - Consolidated beta branch system. - Replaced the mod installation system (which *moved* mods out of `Steam` directory into the home directory) with a new system that makes a new hard-link copy of the mod to the home directory. This solves two issues. First, SteamCMD's ACF cache will no longer get out of sync and label mods as "dirty", potentially causing issues with mod updates. Second, it allows files and directories of the mod in the home folder to be lowercased (for Arma compatibility) without "dirtying" the original SteamCMD files. The optional mod system was also adjusted to support this. - Generalized home directory references so it could easily be changed in the future if needed. - Fixed RPT log file location to match Arma docs. - Updated the Startup Command of the server and HCs to use a Yolk-generated parameter (par) file. This should hopefully avoid any further issues with mod or parameter parsing in the future, as trying to organize and escape everything correctly is too much of a pain to maintain. This also future-proofs the Egg if Pelican decides to stop supporting Yolk-generated variables in the Startup Command (ie. pre-evaluated Startup Commands). - Changed the server start to echo the par startup parameters instead of the raw Startup Command (for easier debugging under the new par system). - Fixed exit-code-checking false positive. - Made comments & code more consistent/clean. - Fixed the license. First, as the original author of this Yolk (not to be confused with Daave's retired Yolk, which this is not a derivative work of), I can say with authority that the original license of this Yolk was written in error. No part of this Yolk was originally written ***by*** Pterodactyl Software; it was written by myself ***for*** the Pterodactyl community. This is further evidenced by the original top comments of `entrypoint.sh` stating the author is myself and the license is MIT. Second, with this new, major revision of the Yolk, I am updating the license to be GNU AGPL-3.0.
58 lines
2.1 KiB
Docker
58 lines
2.1 KiB
Docker
FROM --platform=$TARGETOS/$TARGETARCH debian:bookworm-slim
|
|
|
|
LABEL author="David Wolfe (Red-Thirten)" maintainer="red_thirten@yahoo.com"
|
|
|
|
LABEL org.opencontainers.image.source="https://github.com/pelican-eggs/yolks"
|
|
LABEL org.opencontainers.image.licenses=AGPL-3.0-or-later
|
|
|
|
## Update base packages and install dependencies
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
RUN dpkg --add-architecture i386 \
|
|
&& apt-get update \
|
|
&& apt-get upgrade -y \
|
|
&& apt-get install -y \
|
|
curl \
|
|
tzdata \
|
|
locales \
|
|
iproute2 \
|
|
gettext-base \
|
|
ca-certificates \
|
|
libssl-dev \
|
|
lib32gcc-s1 \
|
|
libsdl2-2.0-0 \
|
|
libsdl2-2.0-0:i386 \
|
|
libstdc++6 \
|
|
libstdc++6:i386 \
|
|
lib32stdc++6 \
|
|
libnss-wrapper \
|
|
libnss-wrapper:i386 \
|
|
libtbbmalloc2 \
|
|
libtbbmalloc2:i386 \
|
|
tini
|
|
|
|
## Configure locale
|
|
RUN update-locale lang=en_US.UTF-8 \
|
|
&& dpkg-reconfigure --frontend noninteractive locales
|
|
|
|
## Prepare NSS Wrapper for the entrypoint as a workaround for Arma 3 requiring a valid UID
|
|
ENV NSS_WRAPPER_PASSWD=/tmp/passwd NSS_WRAPPER_GROUP=/tmp/group
|
|
RUN touch ${NSS_WRAPPER_PASSWD} ${NSS_WRAPPER_GROUP} \
|
|
&& chgrp 0 ${NSS_WRAPPER_PASSWD} ${NSS_WRAPPER_GROUP} \
|
|
&& chmod g+rw ${NSS_WRAPPER_PASSWD} ${NSS_WRAPPER_GROUP}
|
|
ADD passwd.template /passwd.template
|
|
|
|
## Setup user and working directory
|
|
RUN useradd -m -d /home/container -s /bin/bash container
|
|
USER container
|
|
ENV USER=container HOME=/home/container
|
|
WORKDIR /home/container
|
|
|
|
## Copy over entrypoint.sh and set permissions
|
|
COPY --chown=container:container ./entrypoint.sh /entrypoint.sh
|
|
RUN chmod +x /entrypoint.sh
|
|
|
|
## Start with Tini to pass future stop signals correctly
|
|
STOPSIGNAL SIGINT
|
|
ENTRYPOINT ["/usr/bin/tini", "-g", "--"]
|
|
CMD ["/entrypoint.sh"]
|