mirror of
https://github.com/itzg/docker-minecraft-server.git
synced 2026-02-17 07:03:57 +00:00
Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
efd3427fc0 | ||
|
|
88ed017ca7 | ||
|
|
30ba3a4b78 | ||
|
|
c8380daee5 | ||
|
|
8afb1651fd | ||
|
|
9560903c80 | ||
|
|
e94f6608d2 | ||
|
|
949faf1620 | ||
|
|
5b3259b1ef | ||
|
|
485d7b0612 | ||
|
|
94b037428e |
11
Dockerfile
11
Dockerfile
@@ -18,9 +18,9 @@ RUN apk add --no-cache -U \
|
||||
nano \
|
||||
python python-dev py2-pip
|
||||
|
||||
RUN pip install mcstatus yq
|
||||
RUN pip install yq
|
||||
|
||||
HEALTHCHECK --start-period=1m CMD mcstatus localhost:$SERVER_PORT ping
|
||||
HEALTHCHECK --start-period=1m CMD mc-monitor status --host localhost --port $SERVER_PORT
|
||||
|
||||
RUN addgroup -g 1000 minecraft \
|
||||
&& adduser -Ss /bin/false -u 1000 -G minecraft -h /home/minecraft minecraft \
|
||||
@@ -29,8 +29,6 @@ RUN addgroup -g 1000 minecraft \
|
||||
|
||||
EXPOSE 25565 25575
|
||||
|
||||
RUN echo 'hosts: files dns' > /etc/nsswitch.conf
|
||||
|
||||
ARG ARCH=amd64
|
||||
|
||||
ARG EASY_ADD_VER=0.3.0
|
||||
@@ -43,11 +41,14 @@ RUN easy-add --file restify --from https://github.com/itzg/restify/releases/down
|
||||
ARG RCON_CLI_VER=1.4.7
|
||||
RUN easy-add --file rcon-cli --from https://github.com/itzg/rcon-cli/releases/download/${RCON_CLI_VER}/rcon-cli_${RCON_CLI_VER}_linux_${ARCH}.tar.gz
|
||||
|
||||
ARG MC_MONITOR_VER=0.1.6
|
||||
RUN easy-add --file mc-monitor --from https://github.com/itzg/mc-monitor/releases/download/v${MC_MONITOR_VER}/mc-monitor_${MC_MONITOR_VER}_Linux_${ARCH}.tar.gz
|
||||
|
||||
ARG MC_RUN_VER=1.3.3
|
||||
RUN easy-add --file mc-server-runner --from https://github.com/itzg/mc-server-runner/releases/download/${MC_RUN_VER}/mc-server-runner_${MC_RUN_VER}_linux_${ARCH}.tar.gz
|
||||
|
||||
COPY mcadmin.jq /usr/share
|
||||
RUN chmod +x /usr/local/bin/*
|
||||
COPY mcstatus /usr/local/bin
|
||||
|
||||
VOLUME ["/data","/mods","/config"]
|
||||
COPY server.properties /tmp/server.properties
|
||||
|
||||
11
README.md
11
README.md
@@ -2,7 +2,7 @@
|
||||
[](https://hub.docker.com/r/itzg/minecraft-server/)
|
||||
[](https://hub.docker.com/r/itzg/minecraft-server/)
|
||||
[](https://github.com/itzg/docker-minecraft-server/issues)
|
||||
[](https://gitter.im/itzg/dockerfiles)
|
||||
[](https://discord.gg/DXfKpjB)
|
||||
[](https://www.buymeacoffee.com/itzg)
|
||||
|
||||
This docker image provides a Minecraft Server that will automatically download the latest stable
|
||||
@@ -106,9 +106,9 @@ and start the server again with `docker start CONTAINERID` to pick up the new co
|
||||
|
||||
To use a different Minecraft version, pass the `VERSION` environment variable, which can have the value
|
||||
|
||||
* LATEST
|
||||
* LATEST (the default)
|
||||
* SNAPSHOT
|
||||
* (or a specific version, such as "1.7.9")
|
||||
* or a specific version, such as "1.7.9"
|
||||
|
||||
For example, to use the latest snapshot:
|
||||
|
||||
@@ -118,6 +118,11 @@ or a specific version:
|
||||
|
||||
docker run -d -e VERSION=1.7.9 ...
|
||||
|
||||
When using "LATEST" or "SNAPSHOT" an upgrade can be performed by simply restarting the container.
|
||||
During the next startup, if a newer version is available from the respective release channel, then
|
||||
the new server jar file is downloaded and used. _NOTE: over time you might see older versions of
|
||||
the server jar remain in the `/data` directory. It is safe to remove those._
|
||||
|
||||
## Healthcheck
|
||||
|
||||
This image contains [Dinnerbone's mcstatus](https://github.com/Dinnerbone/mcstatus) and uses
|
||||
|
||||
50
k8s-examples/using-statefulset.yml
Normal file
50
k8s-examples/using-statefulset.yml
Normal file
@@ -0,0 +1,50 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: StatefulSet
|
||||
metadata:
|
||||
labels:
|
||||
app: example
|
||||
name: example
|
||||
spec:
|
||||
replicas: 1
|
||||
serviceName: example
|
||||
selector:
|
||||
matchLabels:
|
||||
app: example
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: example
|
||||
spec:
|
||||
containers:
|
||||
- name: mc
|
||||
image: itzg/minecraft-server
|
||||
env:
|
||||
- name: EULA
|
||||
value: "TRUE"
|
||||
volumeMounts:
|
||||
- mountPath: /data
|
||||
name: data
|
||||
volumeClaimTemplates:
|
||||
- metadata:
|
||||
name: data
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 1Gi
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
labels:
|
||||
service: example
|
||||
name: example
|
||||
spec:
|
||||
ports:
|
||||
- port: 25565
|
||||
targetPort: 25565
|
||||
selector:
|
||||
app: example
|
||||
type: LoadBalancer
|
||||
16
mcstatus
Executable file
16
mcstatus
Executable file
@@ -0,0 +1,16 @@
|
||||
#!/bin/bash
|
||||
|
||||
##### mcstatus shim for mc-monitor
|
||||
# handles translating calls to
|
||||
# mcstatus (host:port) (command)
|
||||
# where the actual command is ignore, but is typically ping or status
|
||||
|
||||
addr="$1"
|
||||
|
||||
IFS=':'
|
||||
read -a parts <<< "${addr}"
|
||||
if [[ ${#parts[*]} -gt 1 ]]; then
|
||||
exec mc-monitor status --host ${parts[0]} --port ${parts[1]}
|
||||
else
|
||||
exec mc-monitor status --host ${parts[0]}
|
||||
fi
|
||||
32
start
32
start
@@ -4,19 +4,41 @@ umask 0002
|
||||
chmod g+w /data
|
||||
|
||||
if [ $(id -u) = 0 ]; then
|
||||
if [[ -v UID && $UID != $(id -u) ]]; then
|
||||
usermod -u $UID minecraft
|
||||
runAsUser=minecraft
|
||||
runAsGroup=minecraft
|
||||
|
||||
if [[ -v UID ]]; then
|
||||
if [[ $UID != 0 ]]; then
|
||||
if [[ $UID != $(id -u minecraft) ]]; then
|
||||
echo "Changing uid of minecraft to $UID"
|
||||
usermod -u $UID minecraft
|
||||
fi
|
||||
else
|
||||
runAsUser=root
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -v GID ]]; then
|
||||
groupmod -o -g $GID minecraft
|
||||
if [[ $GID != 0 ]]; then
|
||||
if [[ $GID != $(id -g minecraft) ]]; then
|
||||
echo "Changing gid of minecraft to $GID"
|
||||
groupmod -o -g $GID minecraft
|
||||
fi
|
||||
else
|
||||
runAsGroup=root
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ $(stat -c "%u" /data) != $UID ]]; then
|
||||
echo "Changing ownership of /data to $UID ..."
|
||||
chown -R minecraft:minecraft /data
|
||||
chown -R ${runAsUser}:${runAsGroup} /data
|
||||
fi
|
||||
|
||||
exec su-exec minecraft:minecraft /start-configuration $@
|
||||
if [[ ${SKIP_NSSWITCH_CONF^^} != TRUE ]]; then
|
||||
echo 'hosts: files dns' > /etc/nsswitch.conf
|
||||
fi
|
||||
|
||||
exec su-exec ${runAsUser}:${runAsGroup} /start-configuration $@
|
||||
else
|
||||
exec /start-configuration $@
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user