# BASE IMAGE FROM docker.io/library/debian:bookworm-slim LABEL maintainer="Penta" LABEL description="Up to date Garry's Mod server container image" ENV DEBIAN_FRONTEND=noninteractive # INSTALL NECESSARY PACKAGES RUN dpkg --add-architecture i386 && \ apt-get update && \ apt-get install -y --no-install-recommends \ bash wget curl ca-certificates tar lsof procps psmisc iproute2 file gdb net-tools \ libc6 libc6:i386 libstdc++6 libstdc++6:i386 libgcc-s1 libgcc-s1:i386 \ zlib1g zlib1g:i386 libcurl4 libcurl4:i386 \ libncurses5:i386 libtinfo5 \ libsdl1.2debian libfontconfig1 \ libglib2.0-0 libnss3 libasound2 \ libx11-6 libxext6 libxi6 libxrender1 \ libfreetype6 libgtk2.0-0 libgdk-pixbuf-2.0-0 libpangocairo-1.0-0 \ libtcmalloc-minimal4 && \ rm -rf /var/lib/apt/lists/* # CLEAN UP RUN rm -rf /var/cache/*/* /var/log/dnf* /var/log/hawkey.* /var/log/yum.* # SET STEAM USER RUN useradd -d /app -m steam USER steam RUN mkdir /app/server && mkdir /app/steamcmd WORKDIR /app # INSTALL STEAMCMD RUN wget -P /tmp/ https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz \ && tar -xvzf /tmp/steamcmd_linux.tar.gz -C /app/steamcmd/ \ && rm -rf /tmp/steamcmd_linux.tar.gz # SETUP STEAMCMD TO DOWNLOAD GMOD SERVER RUN /app/steamcmd/steamcmd.sh +@sSteamCmdForcePlatformType linux +force_install_dir /app/server +login anonymous +app_update 4020 validate +quit # SETUP CSS CONTENT RUN /app/steamcmd/steamcmd.sh +@sSteamCmdForcePlatformType linux +force_install_dir /tmp +login anonymous +app_update 232330 validate +quit RUN mkdir /app/mounts && mv /tmp/cstrike /app/mounts/cstrike RUN rm -rf /tmp/cstrike # SETUP BINARIES FOR x32 and x64 bits RUN mkdir -p /app/.steam/sdk32 \ && cp -v /app/steamcmd/linux32/steamclient.so /app/.steam/sdk32/steamclient.so \ && mkdir -p /app/.steam/sdk64 \ && cp -v /app/steamcmd/linux64/steamclient.so /app/.steam/sdk64/steamclient.so # SET GMOD MOUNT CONTENT RUN echo '"mountcfg" {"cstrike" "/app/mounts/cstrike"}' > /app/server/garrysmod/cfg/mount.cfg # CREATE DATABASE FILE RUN touch /app/server/garrysmod/sv.db # CREATE CACHE FOLDERS RUN mkdir -p /app/server/steam_cache/content && mkdir -p /app/server/garrysmod/cache/srcds ENV LD_LIBRARY_PATH=/app/server/bin:/app/server:/app/.steam/sdk32:/app/.steam/sdk64:/app/steamcmd/linux32:/app/steamcmd/linux64 ENV HOME=/app ENV USER=steam # PORT FORWARDING EXPOSE 27015 EXPOSE 27015/udp EXPOSE 27005/udp # SET ENVIRONMENT VARIABLES ENV MAXPLAYERS="16" ENV GAMEMODE="sandbox" ENV MAP="gm_construct" ENV PORT="27015" ENV ARGS="" # START THE SERVER CMD ["/bin/bash","-lc","touch /app/server/garrysmod/console.log && tail -F /app/server/garrysmod/console.log & exec /app/server/srcds_linux -game garrysmod -console -strictportbind -port ${PORT} -maxplayers ${MAXPLAYERS} +gamemode ${GAMEMODE} +map ${MAP} ${ARGS}"]