Files
docker_minecraft_server_aut…/docker-compose.yml
2023-11-24 23:09:42 +01:00

133 lines
4.0 KiB
YAML

version: "3.9"
networks:
# You need to have a network with static ips for the servers.
mc_network:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.20.0.0/16
services:
auto_starter:
container_name: mc_auto_starter
restart: always
build: .
ports:
- 25565:25565
- 25566:25566
environment:
# The ip of the placeholder servers below
PLACEHOLDER_SERVER_SLEEPING_IP: "172.20.0.3"
PLACEHOLDER_SERVER_STARTING_IP: "172.20.0.4"
# Port mapping for the servers
# The key is the external port of the placeholder server
# The value is the internal ip of the actual server
# Don't change the server port in the actual server. Use this instead.
PORT_IP_MAP: |
25565: 172.20.0.5
25566: 172.20.0.6
networks:
mc_network:
ipv4_address: 172.20.0.2
volumes:
- /var/run/docker.sock:/var/run/docker.sock
# These are the placeholder servers. They are used to show the player a message
# They are not needed, but they are nice to have
# Keep in mind these servers are consuming some resources
mc_placeholder_server_sleeping:
container_name: mc_placeholder_server_sleeping
restart: always
image: itzg/minecraft-server:java8
environment:
VERSION: "1.12.2"
EULA: "TRUE"
MOTD: "Sleeping | Join to wake up"
# The placeholder servers should be as lightweight as possible
MAX_PLAYERS: "0"
MAX_MEMORY: "512M"
INIT_MEMORY: "512M"
LEVEL_TYPE: "FLAT"
JVM_XX_OPTS: "-XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC -XX:+UseCompressedOops"
VIEW_DISTANCE: "1"
SPAWN_ANIMALS: "false"
SPAWN_MONSTERS: "false"
SNOOPER_ENABLED: "false"
GENERATE_STRUCTURES: "false"
ALLOW_NETHER: "false"
ALLOW_END: "false"
networks:
mc_network:
ipv4_address: 172.20.0.3
mc_placeholder_server_starting:
container_name: mc_placeholder_server_starting
restart: always
image: itzg/minecraft-server:java8
environment:
VERSION: "1.12.2"
EULA: "TRUE"
MOTD: "Starting, please wait..."
# The placeholder servers should be as lightweight as possible
MAX_PLAYERS: "0"
MAX_MEMORY: "512M"
INIT_MEMORY: "512M"
LEVEL_TYPE: "FLAT"
JVM_XX_OPTS: "-XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC -XX:+UseCompressedOops"
VIEW_DISTANCE: "1"
SPAWN_ANIMALS: "false"
SPAWN_MONSTERS: "false"
SNOOPER_ENABLED: "false"
GENERATE_STRUCTURES: "false"
ALLOW_NETHER: "false"
ALLOW_END: "false"
networks:
mc_network:
ipv4_address: 172.20.0.4
# These are the actual servers
# For itzg/minecraft-server you can find the documentation here: https://docker-minecraft-server.readthedocs.io/en/latest/variables/
mc:
container_name: example_mc_server_1
image: itzg/minecraft-server
restart: no #! This is important. If you restart the server automatically, the auto_starter will not work
environment:
type: "PAPER"
EULA: "TRUE"
MOTD: "Example Server 1"
MAX_PLAYERS: "1"
# Enable autostop, so the auto_starter makes sense
ENABLE_AUTOSTOP: "TRUE"
AUTOSTOP_TIMEOUT_EST: "10"
AUTOSTOP_TIMEOUT_INIT: "10"
#! Dont change SERVER_PORT. Use PORT_IP_MAP in auto_starter instead.
#! SERVER_PORT default is "25565"
networks:
mc_network:
ipv4_address: 172.20.0.5
mc2:
container_name: example_mc_server_2
image: itzg/minecraft-server
restart: no #! This is important. If you restart the server automatically, the auto_starter will not work
environment:
type: "PAPER"
EULA: "TRUE"
MOTD: "Example Server 2"
MAX_PLAYERS: "1"
# Enable autostop, so the auto_starter makes sense
ENABLE_AUTOSTOP: "TRUE"
AUTOSTOP_TIMEOUT_EST: "10"
AUTOSTOP_TIMEOUT_INIT: "10"
#! Dont change SERVER_PORT. Use PORT_IP_MAP in auto_starter instead.
# SERVER_PORT default is "25565"
networks:
mc_network:
ipv4_address: 172.20.0.6