Initial
This commit is contained in:
81
web/Dockerfile
Normal file
81
web/Dockerfile
Normal file
@@ -0,0 +1,81 @@
|
||||
FROM debian:bookworm-slim
|
||||
|
||||
# Replace shell with bash so we can source files
|
||||
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
|
||||
|
||||
# Set debconf to run non-interactively and agree to the SteamCMD EULA
|
||||
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections \
|
||||
&& echo steam steam/question select "I AGREE" | debconf-set-selections \
|
||||
&& echo steam steam/license note '' | debconf-set-selections \
|
||||
&& dpkg --add-architecture i386
|
||||
|
||||
# Add backports and contrib
|
||||
RUN sed -i /etc/apt/sources.list.d/debian.sources -e 's/Components: main/Components: main contrib non-free/g'
|
||||
|
||||
# Install _only_ the necessary packages
|
||||
RUN apt-get update && apt-get -y upgrade && apt-get -y install --no-install-recommends \
|
||||
binutils \
|
||||
curl \
|
||||
git \
|
||||
gwenhywfar-tools \
|
||||
jq \
|
||||
libxml2-utils \
|
||||
locales \
|
||||
nano \
|
||||
procps \
|
||||
wget \
|
||||
rename \
|
||||
steamcmd \
|
||||
xmlstarlet
|
||||
|
||||
# Set the locale
|
||||
RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && locale-gen
|
||||
ENV LANG en_US.UTF-8
|
||||
ENV LANGUAGE en_US:en
|
||||
ENV LC_ALL en_US.UTF-8
|
||||
|
||||
# Steamcmd needs its path added, as it ends up in /usr/games.
|
||||
# Our server script is bind mounted in /files in docker-compose.
|
||||
ENV PATH /usr/games:/files/bin:/web/bin:${PATH}
|
||||
|
||||
# Install nodejs
|
||||
RUN mkdir /usr/local/nvm
|
||||
ENV NVM_DIR /usr/local/nvm
|
||||
ENV NODE_VERSION 20.12.2
|
||||
RUN echo $NODE_VERSION
|
||||
|
||||
# Install nvm with node and npm
|
||||
RUN wget -O - https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash \
|
||||
&& . $NVM_DIR/nvm.sh \
|
||||
&& nvm install $NODE_VERSION \
|
||||
&& nvm alias default $NODE_VERSION \
|
||||
&& nvm use default
|
||||
|
||||
ENV NODE_PATH $NVM_DIR/versions/node/v$NODE_VERSION/lib/node_modules
|
||||
ENV PATH $NVM_DIR/versions/node/v$NODE_VERSION/bin:$PATH
|
||||
|
||||
# Setup a non-privileged user
|
||||
ARG USER_ID
|
||||
|
||||
RUN groupadd -g ${USER_ID} user && \
|
||||
useradd -l -u ${USER_ID} -m -g user user && \
|
||||
mkdir -p /home/user /serverfiles/mpmissions /serverfiles/steamapps/workshop/content /web && \
|
||||
chown -R user:user /home/user /serverfiles /web
|
||||
|
||||
# Shut steamcmd up
|
||||
RUN cd /usr/lib/i386-linux-gnu && ln -s /web/bin/steamservice.so
|
||||
|
||||
# Add bercon https://github.com/WoozyMasta/bercon
|
||||
RUN wget https://github.com/WoozyMasta/bercon/releases/download/1.0.0/bercon \
|
||||
&& chmod +x bercon \
|
||||
&& mv bercon /usr/bin
|
||||
|
||||
# Use our non-privileged user
|
||||
USER user
|
||||
|
||||
# The dayzserver script expects a home directory to itself.
|
||||
WORKDIR /home/user
|
||||
|
||||
# Run the web server
|
||||
ENTRYPOINT ["entrypoint.sh"]
|
||||
CMD ["start.sh"]
|
||||
Reference in New Issue
Block a user