stardew-multiplayer-docker/docker/Dockerfile-steam
norimicry 115e79f240 Refactor Docker configuration and update README.md
Docker-related files have been renamed and updated to better suit the GOG and Steam versions of the game. The README.md has been significantly expanded, improving explanation of server setup and usage details for each version.
2024-05-01 10:50:26 -04:00

69 lines
2.7 KiB
Plaintext

# Pull base image.
FROM jlesage/baseimage-gui:debian-11
ARG STEAM_USER
ARG STEAM_PASS
# Steam appId
ARG SRCDS_APPID
# Set the name of the application.
ENV APP_NAME="StardewValley"
## Uses a distinct PATH from Stardew/game/ that GOG has.
ENV GAME_PATH="/data/Stardew/game"
## lib32gcc-s1 is required for steamcmd
RUN apt-get update && apt-get install -y wget unzip tar strace mono-complete xterm gettext-base jq netcat procps lib32gcc-s1 && apt-get clean
# Game + ModLoader 1.6.2 4.0.1
RUN mkdir -p ${GAME_PATH} && \
mkdir -p /data/nexus && \
mkdir -p /data/steamcmd
## FOR STEAM VERSION
RUN wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz -qO steamcmd.tar.gz && \
tar -xzvf steamcmd.tar.gz -C /data/steamcmd && \
cd /data/steamcmd
## Don't set the arg earlier, if you need to rebuild the container
## it will cache up to here when you change the ENV VAR
ARG STEAM_GUARD
RUN chown -R 1000:1000 /data && \
export HOME=/data && \
/data/steamcmd/steamcmd.sh +force_install_dir ${GAME_PATH} +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_GUARD} +app_update ${SRCDS_APPID} validate +quit
RUN mkdir -p /data/.steam/sdk32 && \
cp -v /data/steamcmd/linux32/steamclient.so /data/.steam/sdk32/steamclient.so && \
mkdir -p /data/.steam/sdk64 && \
cp -v /data/steamcmd/linux64/steamclient.so /data/.steam/sdk64/steamclient.so
## END STEAM VERSION
RUN wget -qO dotnet.tar.gz https://download.visualstudio.microsoft.com/download/pr/d4b71fac-a2fd-4516-ac58-100fb09d796a/e79d6c2a8040b59bf49c0d167ae70a7b/dotnet-sdk-5.0.408-linux-arm64.tar.gz &&\
tar -zxf dotnet.tar.gz -C /usr/share/dotnet &&\
rm dotnet.tar.gz &&\
ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet
RUN wget --user-agent="Mozilla" https://github.com/Pathoschild/SMAPI/releases/download/4.0.8/SMAPI-4.0.8-installer.zip -qO /data/nexus.zip && \
unzip /data/nexus.zip -d /data/nexus/ && \
SMAPI_INSTALLER=$(find /data/nexus -name 'SMAPI*.*Installer' -type f -path "*/SMAPI * installer/internal/linux/*" | head -n 1) && \
/bin/bash -c "SMAPI_NO_TERMINAL=true SMAPI_USE_CURRENT_SHELL=true echo -e '2\n\n' | \"$SMAPI_INSTALLER\" --install --game-path \"$GAME_PATH\"" || :
# Add Mods & Scripts
COPY ["mods/", "$GAME_PATH/Mods/"]
COPY scripts/ /opt/
RUN chmod +x $GAME_PATH/StardewValley && \
chmod -R 777 $GAME_PATH && \
chown -R 1000:1000 /data/Stardew && \
chmod +x /opt/*.sh
RUN mkdir /etc/services.d/utils && touch /etc/services.d/app/utils.dep
COPY run /etc/services.d/utils/run
RUN chmod +x /etc/services.d/utils/run
COPY start.sh $GAME_PATH/start.sh
RUN chmod +x $GAME_PATH/start.sh
COPY docker-entrypoint-steam.sh /startapp.sh
RUN chmod +x /startapp.sh