# 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"]