From f8cecdc00cf110957841cebc6952eab6b4f197d4 Mon Sep 17 00:00:00 2001 From: Andrei Stoica Date: Wed, 22 Apr 2020 18:16:12 -0400 Subject: [PATCH] inital commit --- Makefile | 13 +++++++++++++ README.md | 27 +++++++++++++++++++++++++++ build/Dockerfile | 9 +++++++++ build/Makefile | 25 +++++++++++++++++++++++++ mc-server.service | 13 +++++++++++++ 5 files changed, 87 insertions(+) create mode 100644 Makefile create mode 100644 README.md create mode 100644 build/Dockerfile create mode 100644 build/Makefile create mode 100644 mc-server.service diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..81310d8 --- /dev/null +++ b/Makefile @@ -0,0 +1,13 @@ +WORKING_DIR := $(shell pwd) + +test: + docker run -it --name mc-test -p 25565:25565 --rm -v $(WORKING_DIR)/spigot:/mc \ + -w /mc openjdk java -Xms1G -Xmx4G -server -jar spigot.jar nogui + +up: + systemctl start mc-server.service + +down: + systemctl stop mc-server.service + +include build/Makefile diff --git a/README.md b/README.md new file mode 100644 index 0000000..789b6d9 --- /dev/null +++ b/README.md @@ -0,0 +1,27 @@ +# Running a Minecraft server (spigot) inside of docker +This is a all in one setup to run a Spigot server using docker. It also includes +a systemd unit file for setting it up to run automaticaly. + +## Building +> make build-latest + - builds the latest version of of spigot + +## deploying +> make deploy + - copies the latest build into the running directory + +## Running +> make test + - run a test instance of the server + +### Systemd unit file (mc-server.service) +1. assumes the working directory to be `/mc`, change it on line 7 +2. copy to systemd config folder (/etc/systemd/system/ on Ubuntu) + +> make up + - start the systemd service + +> make down + - top the systemd service + + diff --git a/build/Dockerfile b/build/Dockerfile new file mode 100644 index 0000000..c503fef --- /dev/null +++ b/build/Dockerfile @@ -0,0 +1,9 @@ +FROM openjdk:9-jdk-slim + +RUN apt-get update && apt-get install -y --no-install-recommends \ + git \ + openssh-client \ + procps \ + ca-certificates \ + && rm -rf /var/lib/apt/lists/* + diff --git a/build/Makefile b/build/Makefile new file mode 100644 index 0000000..52dc7e0 --- /dev/null +++ b/build/Makefile @@ -0,0 +1,25 @@ +LATEST := $(shell ls -rt build/spigot*.jar | tail -1) + +deploy: build-latest spigot + cp $(LATEST) spigot/spigot.jar + +deploy-1.15.2: build/spigot-1.15.2.jar spigot + cp build/spigot-1.15.2.jar spigot/spigot.jar + +build-latest: build-image + docker run -it --rm -v $(WORKING_DIR)/build:/mc -w /mc java-build java -cp /mc \ + -jar BuildTools.jar + +build/spigot-1.15.2.jar: build-image + docker run -it --rm -v $(WORKING_DIR)/build:/mc -w /mc java-build java -cp /mc \ + -jar BuildTools.jar --rev 1.15.2 + +build-image: build/BuildTools.jar + docker build -t java-build build/ + +build/BuildTools.jar: + curl -o build/BuildTools.jar \ + https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar + +spigot: + mkdir spigot diff --git a/mc-server.service b/mc-server.service new file mode 100644 index 0000000..effcada --- /dev/null +++ b/mc-server.service @@ -0,0 +1,13 @@ +[Unit] +Description=Minecraft Server +After=docker.service +Requires=docker.service + +[Service] +Environment="MC_DIR=/mc" +Restart=Always +ExecStart=/usr/bin/docker run -t --name mc -p 25565:25565 --rm -v ${MC_DIR}/spigot:/mc -w /mc openjdk java -Xms1G -Xmx4G -server -jar spigot.jar nogui +ExecStop=/usr/bin/docker container stop mc + +[Install] +WantedBy=multi-user.target