Added folders as well...

This commit is contained in:
2024-07-04 13:15:34 +02:00
commit f72d79958d
62 changed files with 3248 additions and 0 deletions
+8
View File
@@ -0,0 +1,8 @@
#!/bin/sh
SCRIPT_DIR=$(dirname -- "$0")
mkdir -p /data/bedrock/server
mkdir -p /data/backup/bedrock
docker stack deploy -c "$SCRIPT_DIR/docker-compose.yml" mc
+140
View File
@@ -0,0 +1,140 @@
version: '3.8'
services:
bedrock:
image: itzg/minecraft-bedrock-server
environment:
# docker image properties
# - UID=485
# - GID=485
- TZ=Europe/Stockholm
- EULA=TRUE
- VERSION=PREVIEW
# Minecraft server.properties parameters
# https://minecraft.fandom.com/wiki/Server.properties#Bedrock_Edition_3
- GAMEMODE=survival
- DIFFICULTY=normal
- "SERVER_NAME=Niefelheim Bedrock server"
- SERVER_PORT=19132
- SERVER_PORT_V6=19131
- ALLOW_CHEATS=true
- ONLINE_MODE=true
- LEVEL_NAME=Dungen
#- OPS=2533274968313137
- OPS=2533274968313137,2535421315133378,2535433533727392
ports:
- target: 19132
published: 19132
protocol: udp
mode: host
networks:
- host
volumes:
- /etc/localtime:/etc/localtime:ro
- server-data:/data
stdin_open: true
tty: true
deploy:
placement:
constraints: [node.labels.Bedrock == true ]
backup:
image: alpinelinux/docker-cli
entrypoint: "sh -c"
command: |
'
DATE_FMT="%Y-%m-%d_%H-%M-%S"
echo "Stopping bedrock service..."
docker service scale $$SERVICE_NAME=0 > /dev/null
for world_dir in /opt/server/worlds/*; do
world_name=$$(basename "$$world_dir")
now=$$(date +$$DATE_FMT)
target="/opt/backups/$$world_name-$$now.tar.gz"
echo "Backing up '$$world_name' to $$target..."
tar -cpzf "$$target" -C "$$world_dir" .
echo "Cleaning up old versions of '$$world_name'..."
find /opt/backups -name "$$world_name-*.tar.gz" -type f -mtime +14 -print -delete
done
echo "Starting bedrock service..."
docker service scale $$SERVICE_NAME=1 > /dev/null
'
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- server-data:/opt/server
- backups-data:/opt/backups
environment:
# assumes this is deployed to a stack named "mc"
- SERVICE_NAME=mc_bedrock
deploy:
placement:
constraints:
- node.role == manager
restart_policy:
condition: none
replicas: 0 # none by default; created when cron hits
labels:
# backup and restart daily at 6am
- swarm.cronjob.enable=true
- swarm.cronjob.schedule=0 6 * * *
update:
image: alpinelinux/docker-cli
entrypoint: "sh -c"
command: |
'
# force service update, which causes restart
docker service update $$SERVICE_NAME --force
'
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
# assumes this is deployed to a stack named "mc"
- SERVICE_NAME=mc_bedrock
deploy:
placement:
constraints:
- node.role == manager
restart_policy:
condition: none
replicas: 0 # none by fedault; created when cron hits
labels:
# restart daily at 6am to get latest MC version
- swarm.cronjob.enable=false
- swarm.cronjob.schedule=0 6 * * *
cron:
image: crazymax/swarm-cronjob:1.13.0
environment:
- TZ=Europe/Stockholm
- LOG_LEVEL=info
- LOG_JSON=false
volumes:
- /var/run/docker.sock:/var/run/docker.sock
deploy:
placement:
constraints:
- node.role == manager
replicas: 0 # disabled; already running in lab stack
networks:
host:
external: true
volumes:
server-data:
driver: local
driver_opts:
type: 'none'
o: 'bind'
device: '/data/bedrock/server'
backups-data:
driver: local
driver_opts:
type: 'none'
o: 'bind'
device: '/data/backup/bedrock'
+3
View File
@@ -0,0 +1,3 @@
#!/bin/bash
docker exec $(docker ps --filter name=mc_bedrock* --quiet) /usr/local/bin/send-command $1
+6
View File
@@ -0,0 +1,6 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json";
"extends": [
"config:base"
]
}
+7
View File
@@ -0,0 +1,7 @@
#!/bin/sh
SCRIPT_DIR=$(dirname -- "$0")
docker stack rm mc
docker volume rm mc_server-data
docker volume rm mc_backups-data