[DayZ] Image Cleanup (#247)
* [DayZ] Image Cleanup - Removed `numactl` dependency as it seems SteamCMD updated and resolved its crashing issues on Linux when logging in with a real account. - Added clearing of SteamCMD appworkshop cache before mod downloads to avoid potential failures (at least until I implement a better method using symlinks for mod folders). - General cleanup of text and labels. * Fix missing `WORKSHOP_DIR` global var
This commit is contained in:
@@ -1,8 +1,8 @@
|
|||||||
FROM --platform=$BUILDPLATFORM debian:bullseye-slim
|
FROM --platform=$TARGETOS/$TARGETARCH debian:bookworm-slim
|
||||||
|
|
||||||
LABEL author="David Wolfe (Red-Thirten)" maintainer="rehlmgaming@gmail.com"
|
LABEL author="David Wolfe (Red-Thirten)" maintainer="red_thirten@yahoo.com"
|
||||||
|
|
||||||
LABEL org.opencontainers.image.source="https://github.com/parkervcp/yolks"
|
LABEL org.opencontainers.image.source="https://github.com/pelican-eggs/yolks"
|
||||||
LABEL org.opencontainers.image.licenses=MIT
|
LABEL org.opencontainers.image.licenses=MIT
|
||||||
|
|
||||||
## Update base packages and install dependencies
|
## Update base packages and install dependencies
|
||||||
@@ -17,7 +17,6 @@ RUN dpkg --add-architecture i386 \
|
|||||||
iproute2 \
|
iproute2 \
|
||||||
gettext-base \
|
gettext-base \
|
||||||
ca-certificates \
|
ca-certificates \
|
||||||
numactl \
|
|
||||||
libssl-dev \
|
libssl-dev \
|
||||||
lib32gcc-s1 \
|
lib32gcc-s1 \
|
||||||
libsdl2-2.0-0 \
|
libsdl2-2.0-0 \
|
||||||
@@ -33,7 +32,7 @@ RUN dpkg --add-architecture i386 \
|
|||||||
RUN update-locale lang=en_US.UTF-8 \
|
RUN update-locale lang=en_US.UTF-8 \
|
||||||
&& dpkg-reconfigure --frontend noninteractive locales
|
&& dpkg-reconfigure --frontend noninteractive locales
|
||||||
|
|
||||||
## Prepare NSS Wrapper for the entrypoint as a workaround for Arma 3 requiring a valid UID
|
## Prepare NSS Wrapper for the entrypoint as a workaround for DayZ requiring a valid UID
|
||||||
ENV NSS_WRAPPER_PASSWD=/tmp/passwd NSS_WRAPPER_GROUP=/tmp/group
|
ENV NSS_WRAPPER_PASSWD=/tmp/passwd NSS_WRAPPER_GROUP=/tmp/group
|
||||||
RUN touch ${NSS_WRAPPER_PASSWD} ${NSS_WRAPPER_GROUP} \
|
RUN touch ${NSS_WRAPPER_PASSWD} ${NSS_WRAPPER_GROUP} \
|
||||||
&& chgrp 0 ${NSS_WRAPPER_PASSWD} ${NSS_WRAPPER_GROUP} \
|
&& chgrp 0 ${NSS_WRAPPER_PASSWD} ${NSS_WRAPPER_GROUP} \
|
||||||
@@ -46,9 +45,10 @@ USER container
|
|||||||
ENV USER=container HOME=/home/container
|
ENV USER=container HOME=/home/container
|
||||||
WORKDIR /home/container
|
WORKDIR /home/container
|
||||||
|
|
||||||
STOPSIGNAL SIGINT
|
STOPSIGNAL SIGINT
|
||||||
|
|
||||||
|
## Copy over and execute entrypoint.sh via Tini
|
||||||
COPY --chown=container:container ./entrypoint.sh /entrypoint.sh
|
COPY --chown=container:container ./entrypoint.sh /entrypoint.sh
|
||||||
RUN chmod +x /entrypoint.sh
|
RUN chmod +x /entrypoint.sh
|
||||||
ENTRYPOINT ["/usr/bin/tini", "-g", "--"]
|
ENTRYPOINT ["/usr/bin/tini", "-g", "--"]
|
||||||
CMD ["/entrypoint.sh"]
|
CMD ["/entrypoint.sh"]
|
||||||
|
@@ -1,15 +1,16 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
## File: Pterodactyl DayZ SA Image - entrypoint.sh
|
## File: DayZ Image - entrypoint.sh
|
||||||
## Author: David Wolfe (Red-Thirten)
|
## Author: David Wolfe (Red-Thirten)
|
||||||
## Contributors: Aussie Server Hosts (https://aussieserverhosts.com/)
|
## Contributors: Aussie Server Hosts (https://aussieserverhosts.com/)
|
||||||
## Date: 2022/11/27
|
## Date: 2024/06/05
|
||||||
## License: MIT License
|
## License: MIT License
|
||||||
|
|
||||||
## === CONSTANTS ===
|
## === CONSTANTS ===
|
||||||
STEAMCMD_DIR="./steamcmd" # SteamCMD's directory containing steamcmd.sh
|
STEAMCMD_DIR="./steamcmd" # SteamCMD's directory containing steamcmd.sh
|
||||||
|
WORKSHOP_DIR="./Steam/steamapps/workshop" # SteamCMD's directory containing workshop downloads
|
||||||
STEAMCMD_LOG="${STEAMCMD_DIR}/steamcmd.log" # Log file for SteamCMD
|
STEAMCMD_LOG="${STEAMCMD_DIR}/steamcmd.log" # Log file for SteamCMD
|
||||||
GAME_ID=221100 # SteamCMD ID for the DayZ SA GAME (not server). Only used for Workshop mod downloads.
|
GAME_ID=221100 # SteamCMD ID for the DayZ GAME (not server). Only used for Workshop mod downloads.
|
||||||
|
|
||||||
# Color Codes
|
# Color Codes
|
||||||
CYAN='\033[0;36m'
|
CYAN='\033[0;36m'
|
||||||
@@ -45,9 +46,9 @@ function RunSteamCMD { #[Input: int server=0 mod=1; int id]
|
|||||||
|
|
||||||
# Check if updating server or mod
|
# Check if updating server or mod
|
||||||
if [[ $1 == 0 ]]; then # Server
|
if [[ $1 == 0 ]]; then # Server
|
||||||
numactl --physcpubind=+0 ${STEAMCMD_DIR}/steamcmd.sh +force_install_dir /home/container "+login \"${STEAM_USER}\" \"${STEAM_PASS}\"" +app_update $2 $extraFlags $validateServer +quit | tee -a "${STEAMCMD_LOG}"
|
${STEAMCMD_DIR}/steamcmd.sh +force_install_dir /home/container "+login \"${STEAM_USER}\" \"${STEAM_PASS}\"" +app_update $2 $extraFlags $validateServer +quit | tee -a "${STEAMCMD_LOG}"
|
||||||
else # Mod
|
else # Mod
|
||||||
numactl --physcpubind=+0 ${STEAMCMD_DIR}/steamcmd.sh "+login \"${STEAM_USER}\" \"${STEAM_PASS}\"" +workshop_download_item $GAME_ID $2 +quit | tee -a "${STEAMCMD_LOG}"
|
${STEAMCMD_DIR}/steamcmd.sh "+login \"${STEAM_USER}\" \"${STEAM_PASS}\"" +workshop_download_item $GAME_ID $2 +quit | tee -a "${STEAMCMD_LOG}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Error checking for SteamCMD
|
# Error checking for SteamCMD
|
||||||
@@ -104,8 +105,8 @@ function RunSteamCMD { #[Input: int server=0 mod=1; int id]
|
|||||||
# Move the downloaded mod to the root directory, and replace existing mod if needed
|
# Move the downloaded mod to the root directory, and replace existing mod if needed
|
||||||
mkdir -p ./@$2
|
mkdir -p ./@$2
|
||||||
rm -rf ./@$2/*
|
rm -rf ./@$2/*
|
||||||
mv -f ./Steam/steamapps/workshop/content/$GAME_ID/$2/* ./@$2
|
mv -f ${WORKSHOP_DIR}/content/$GAME_ID/$2/* ./@$2
|
||||||
rm -d ./Steam/steamapps/workshop/content/$GAME_ID/$2
|
rm -d ${WORKSHOP_DIR}/content/$GAME_ID/$2
|
||||||
# Make the mods contents all lowercase
|
# Make the mods contents all lowercase
|
||||||
ModsLowercase @$2
|
ModsLowercase @$2
|
||||||
# Move any .bikey's to the keys directory
|
# Move any .bikey's to the keys directory
|
||||||
@@ -238,6 +239,11 @@ if [[ ${UPDATE_SERVER} == 1 ]]; then
|
|||||||
if [[ -n $latestUpdate ]] && [[ $latestUpdate =~ ^[0-9]+$ ]]; then # Notify last update date, if valid
|
if [[ -n $latestUpdate ]] && [[ $latestUpdate =~ ^[0-9]+$ ]]; then # Notify last update date, if valid
|
||||||
echo -e "\tMod was last updated: ${CYAN}$(date -d @${latestUpdate})${NC}"
|
echo -e "\tMod was last updated: ${CYAN}$(date -d @${latestUpdate})${NC}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Delete SteamCMD appworkshop cache before running to avoid mod download failures
|
||||||
|
echo -e "\tClearing SteamCMD appworkshop cache..."
|
||||||
|
rm -f ${WORKSHOP_DIR}/appworkshop_$GAME_ID.acf
|
||||||
|
|
||||||
echo -e "\tAttempting mod update/download via SteamCMD...\n"
|
echo -e "\tAttempting mod update/download via SteamCMD...\n"
|
||||||
RunSteamCMD 1 $modID
|
RunSteamCMD 1 $modID
|
||||||
fi
|
fi
|
||||||
@@ -280,6 +286,6 @@ echo -e "${CYAN}${modifiedStartup}${NC}\n"
|
|||||||
${modifiedStartup}
|
${modifiedStartup}
|
||||||
|
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
echo -e "\n${RED}PTDL_CONTAINER_ERR: There was an error while attempting to run the start command.${NC}\n"
|
echo -e "\n${RED}[STARTUP_ERR]: There was an error while attempting to run the start command.${NC}\n"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
Reference in New Issue
Block a user