name: xfe-minecraft
services:
minecraft:
# Pin a tested image digest in production.
image: itzg/minecraft-server:java21
restart: unless-stopped
environment:
EULA: "TRUE"
TYPE: FORGE
VERSION: "1.21.1"
FORGE_VERSION: "52.1.16"
MEMORY: 6G
ports:
- "25565:25565"
expose:
- "8765"
volumes:
- minecraft-data:/data
- ./mods:/mods:ro
# Copy xfeservermanager.docker.json.example to this path before startup.
- ./xfeservermanager.docker.json:/data/config/xfeservermanager.json:ro
networks: [game, management]
healthcheck:
test: ["CMD", "mc-health"]
interval: 30s
timeout: 10s
retries: 5
caddy:
image: caddy:2.10-alpine
restart: unless-stopped
depends_on:
minecraft:
condition: service_healthy
ports:
- "443:443"
environment:
XFESM_UPSTREAM: minecraft:8765
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy-data:/data
networks:
edge: {}
management:
ipv4_address: 172.30.45.2
networks:
edge: {}
game: {}
management:
internal: true
ipam:
config:
- subnet: 172.30.45.0/24
volumes:
minecraft-data: {}
caddy-data: {}
name: xfe-minecraft
services:
minecraft:
# Pin a tested image digest in production.
image: itzg/minecraft-server:java21
restart: unless-stopped
environment:
EULA: "TRUE"
TYPE: FORGE
VERSION: "1.21.1"
FORGE_VERSION: "52.1.16"
MEMORY: 6G
ports:
- "25565:25565"
expose:
- "8765"
volumes:
- minecraft-data:/data
- ./mods:/mods:ro
# Copy xfeservermanager.docker.json.example to this path before startup.
- ./xfeservermanager.docker.json:/data/config/xfeservermanager.json:ro
networks: [game, management]
healthcheck:
test: ["CMD", "mc-health"]
interval: 30s
timeout: 10s
retries: 5
caddy:
image: caddy:2.10-alpine
restart: unless-stopped
depends_on:
minecraft:
condition: service_healthy
ports:
- "443:443"
environment:
XFESM_UPSTREAM: minecraft:8765
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy-data:/data
networks:
edge: {}
management:
ipv4_address: 172.30.45.2
networks:
edge: {}
game: {}
management:
internal: true
ipam:
config:
- subnet: 172.30.45.0/24
volumes:
minecraft-data: {}
caddy-data: {}