Files
Patrick Meade 677e13353f Adds Dockerfile and Utility Scripts (#31446)
* Adds Dockerfile and Utility Scripts

* Remove RUSTG_VERSION from _build_dependencies.sh

* Moved documentation to references, added link to mkdocs.yml

* Update references, finish documentation, fix typos

* Fixed small error in docs and scripts

* Add CI action to build and publish game server images

* Bump CI action to compatible Ubuntu runner

* Fix up the base image for NanoMap rendering

* Remove commented out base for nanomap-build stage

* Removed default values from Dockerfile build arguments

Sanitized default arguments in Dockerfile
Updated CI workflow to use _build_dependencies.sh to build the Docker image
Added documentation on using --build-arg flags with the docker build command

* Modify caching for Docker builds in CI

* Add missing files to pacify Nanomap Renderer
2026-04-11 22:13:20 +00:00

51 lines
1.6 KiB
Bash
Executable File

#!/usr/bin/env bash
# run
# Create and run a BYOND server container for Paradise
set -euo pipefail
BYOND_PORT="6666"
DB_CONTAINER="paradise_db"
NETWORK_NAME="paradise_net"
SERVER_CONTAINER="paradise"
SERVER_IMAGE="paradise:latest"
# make sure we're at the root of the repository
if [ ! -f "Dockerfile" ]; then
echo >&2 "Error: No Dockerfile found. Are you at the repository root?"
exit 1
fi
# make sure the server doesn't already exist
if docker ps -a --format '{{.Names}}' | grep -qx "${SERVER_CONTAINER}"; then
echo >&2 "Error: container '${SERVER_CONTAINER}' already exists."
echo >&2 "Stop it with: docker rm -f ${SERVER_CONTAINER}"
exit 1
fi
# make sure the database is running, so we can connect to it
if ! docker ps --format '{{.Names}}' | grep -qx "${DB_CONTAINER}"; then
echo >&2 "Error: container '${DB_CONTAINER}' is not running."
echo >&2 "Start it (or recreate it) before running the server."
exit 1
fi
# ensure the server has a 'config.toml' file to use
[ -f "config/config.toml" ] || { echo >&2 "Error: missing config/config.toml (did you copy config/example/config.toml yet?)"; exit 1; }
# ensure we've got a data directory with 'mode.txt'
mkdir -p data
[ -f "data/mode.txt" ] || echo "extended" >data/mode.txt
# create and run the server container
# --detach \ <== add this below if you want it to run in the background
docker run \
--init \
--name "${SERVER_CONTAINER}" \
--network "${NETWORK_NAME}" \
--publish "${BYOND_PORT}:6666" \
--rm \
--mount type=bind,src="${PWD}/config",dst=/config,readonly \
--mount type=bind,src="${PWD}/data",dst=/data \
"${SERVER_IMAGE}"