Dockerfile 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. # BASE IMAGE
  2. FROM docker.io/library/debian:bookworm-slim
  3. LABEL maintainer="Penta"
  4. LABEL description="Up to date Garry's Mod server container image"
  5. ENV DEBIAN_FRONTEND=noninteractive
  6. # INSTALL NECESSARY PACKAGES
  7. RUN dpkg --add-architecture i386 && \
  8. apt-get update && \
  9. apt-get install -y --no-install-recommends \
  10. bash wget curl ca-certificates tar lsof procps psmisc iproute2 file gdb net-tools \
  11. libc6 libc6:i386 libstdc++6 libstdc++6:i386 libgcc-s1 libgcc-s1:i386 \
  12. zlib1g zlib1g:i386 libcurl4 libcurl4:i386 \
  13. libncurses5:i386 libtinfo5 \
  14. libsdl1.2debian libfontconfig1 \
  15. libglib2.0-0 libnss3 libasound2 \
  16. libx11-6 libxext6 libxi6 libxrender1 \
  17. libfreetype6 libgtk2.0-0 libgdk-pixbuf-2.0-0 libpangocairo-1.0-0 \
  18. libtcmalloc-minimal4 && \
  19. rm -rf /var/lib/apt/lists/*
  20. # CLEAN UP
  21. RUN rm -rf /var/cache/*/* /var/log/dnf* /var/log/hawkey.* /var/log/yum.*
  22. # SET STEAM USER
  23. RUN useradd -d /app -m steam
  24. USER steam
  25. RUN mkdir /app/server && mkdir /app/steamcmd
  26. WORKDIR /app
  27. # INSTALL STEAMCMD
  28. RUN wget -P /tmp/ https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz \
  29. && tar -xvzf /tmp/steamcmd_linux.tar.gz -C /app/steamcmd/ \
  30. && rm -rf /tmp/steamcmd_linux.tar.gz
  31. # SETUP STEAMCMD TO DOWNLOAD GMOD SERVER
  32. RUN /app/steamcmd/steamcmd.sh +@sSteamCmdForcePlatformType linux +force_install_dir /app/server +login anonymous +app_update 4020 validate +quit
  33. # SETUP CSS CONTENT
  34. RUN /app/steamcmd/steamcmd.sh +@sSteamCmdForcePlatformType linux +force_install_dir /tmp +login anonymous +app_update 232330 validate +quit
  35. RUN mkdir /app/mounts && mv /tmp/cstrike /app/mounts/cstrike
  36. RUN rm -rf /tmp/cstrike
  37. # SETUP BINARIES FOR x32 and x64 bits
  38. RUN mkdir -p /app/.steam/sdk32 \
  39. && cp -v /app/steamcmd/linux32/steamclient.so /app/.steam/sdk32/steamclient.so \
  40. && mkdir -p /app/.steam/sdk64 \
  41. && cp -v /app/steamcmd/linux64/steamclient.so /app/.steam/sdk64/steamclient.so
  42. # SET GMOD MOUNT CONTENT
  43. RUN echo '"mountcfg" {"cstrike" "/app/mounts/cstrike"}' > /app/server/garrysmod/cfg/mount.cfg
  44. # CREATE DATABASE FILE
  45. RUN touch /app/server/garrysmod/sv.db
  46. # CREATE CACHE FOLDERS
  47. RUN mkdir -p /app/server/steam_cache/content && mkdir -p /app/server/garrysmod/cache/srcds
  48. ENV LD_LIBRARY_PATH=/app/server/bin:/app/server:/app/.steam/sdk32:/app/.steam/sdk64:/app/steamcmd/linux32:/app/steamcmd/linux64
  49. ENV HOME=/app
  50. ENV USER=steam
  51. # PORT FORWARDING
  52. EXPOSE 27015
  53. EXPOSE 27015/udp
  54. EXPOSE 27005/udp
  55. # SET ENVIRONMENT VARIABLES
  56. ENV MAXPLAYERS="16"
  57. ENV GAMEMODE="sandbox"
  58. ENV MAP="gm_construct"
  59. ENV PORT="27015"
  60. ENV ARGS=""
  61. # START THE SERVER
  62. 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}"]