# Follow logs
docker logs -f minecraft-server
# Attach to stdin/stdout (same as console)
docker attach minecraft-server
# Stop
docker stop minecraft-server
# Start
docker start minecraft-server
# Restart
docker restart minecraft-serverThe startup script calls /app/download_jar.sh before launching Java.
- Set
JAR_DOWNLOAD_MODE=alwaysto force refresh each startup. - Set
JAR_DOWNLOAD_MODE=if-url-changedto refresh only ifJAR_URLchanged. - Set
JAR_DOWNLOAD_MODE=if-missingto only download whenserver.jaris absent.
To force a re-download on next start:
rm -f ./data/server.jar
docker restart minecraft-serverAt minimum, back up your mounted data directory:
tar -czf "minecraft-backup-$(date +%F).tar.gz" ./dataFor active servers, prefer plugin-assisted backups or stop the server first for strict consistency.
If you do not want host exposure and only want service-to-service traffic on Docker network:
- In
examples/run-minecraft-server.sh, setENABLE_JAVA_PORT="false". - In
examples/run-proxy-server.sh, setENABLE_JAVA_PORT="false"(and keep Bedrock/Votifier disabled). - For manual
docker run, omit all-pflags.
- Confirm
JAR_URLis reachable from the deployment host. - Check logs for download or checksum failures.
- Verify
/datais writable by UID/GID used in the container (default10001:10001). - Ensure
JVM_MEMORYfits host capacity. - For Velocity/proxy jars, set
MC_NOGUI=false(Velocity rejects--nogui).
Before opening a PR or cutting a release:
./scripts/validate.sh --with-docker-build