Files
SS14-Docker-Linux-Server/Dockerfile
2025-12-08 17:41:16 +00:00

49 lines
1.5 KiB
Docker

# Build stage
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
# Update and install necessary tools
RUN apt-get -y update && \
apt-get -y install curl unzip wget git jq
# Download and extract SS14 server (latest version compatible with .NET 9)
# Using manifest to get current server build
RUN SERVER_URL=$(curl -sL https://central.spacestation14.io/builds/wizards/manifest.json | \
jq -r '.builds | to_entries | sort_by(.value.time) | last | .value.server."linux-x64".url') && \
echo "Downloading server from: $SERVER_URL" && \
wget -O SS14.Server_linux-x64.zip "$SERVER_URL" && \
unzip SS14.Server_linux-x64.zip -d /ss14-default/
# Download and build Watchdog
RUN wget https://github.com/space-wizards/SS14.Watchdog/archive/refs/heads/master.zip -O Watchdog.zip && \
unzip Watchdog.zip -d Watchdog && \
cd Watchdog/SS14* && \
dotnet publish -c Release -r linux-x64 --no-self-contained && \
cp -r SS14.Watchdog/bin/Release/net9.0/linux-x64/publish /ss14-default
# Server stage
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS server
# Copy from the build stage
COPY --from=build /ss14-default /ss14-default
# Install necessary tools
RUN apt-get -y update && apt-get -y install unzip
# Expose necessary ports
EXPOSE 1212/tcp
EXPOSE 1212/udp
EXPOSE 8080/tcp
# Set volume
VOLUME [ "/ss14" ]
# Add configurations
ADD appsettings.yml /ss14-default/publish/appsettings.yml
ADD server_config.toml /ss14-default/publish/server_config.toml
COPY start.sh /start.sh
RUN chmod +x /start.sh
# Set the entry point for the container
ENTRYPOINT ["/start.sh"]