|
|
@@ -0,0 +1,79 @@
|
|
|
+# 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","exec /app/server/srcds_linux -console -nobreakpad -usercon -debug -dev -game garrysmod -strictportbind -port ${PORT} -maxplayers ${MAXPLAYERS} +gamemode ${GAMEMODE} +map ${MAP} ${ARGS}"]
|