mirror of
				https://ceregatti.org/git/daniel/dayzdockerserver.git
				synced 2025-11-03 23:03:35 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			81 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
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-cli https://github.com/WoozyMasta/bercon
 | 
						|
RUN wget https://github.com/WoozyMasta/bercon-cli/releases/latest/download/bercon-cli-linux-amd64 -O bercon-cli \
 | 
						|
    && chmod +x bercon-cli \
 | 
						|
    && mv bercon-cli /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"]
 |