129 lines
4.4 KiB
YAML
129 lines
4.4 KiB
YAML
version: '3'
|
|
|
|
services:
|
|
|
|
traefik:
|
|
image: traefik
|
|
restart: unless-stopped
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
volumes:
|
|
#- /var/run/docker.sock:/var/run/docker.sock
|
|
- "////./pipe/docker_engine:/var/run/docker.sock"
|
|
- ./traefik.yml:/etc/traefik/traefik.yml
|
|
- ./authorized_users:/etc/traefik/authorized_users
|
|
- ./acme.json:/acme.json
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.dashboard-http.entrypoints=http"
|
|
- "traefik.http.routers.dashboard-http.rule=Host(`localhost/`)"
|
|
- "traefik.http.routers.dashboard-http.middlewares=dashboard-redirect"
|
|
- "traefik.http.middlewares.dashboard-redirect.redirectscheme.scheme=https"
|
|
- "traefik.http.routers.dashboard-https.entrypoints=https"
|
|
- "traefik.http.routers.dashboard-https.rule=(Host(`localhost/`)) && (PathPrefix(`/api`) || PathPrefix(`/dashboard`))"
|
|
- "traefik.http.routers.dashboard-https.tls.certResolver=letsencrypt"
|
|
- "traefik.http.routers.dashboard-https.service=api@internal"
|
|
- "traefik.http.routers.dashboard-https.middlewares=dashboard-auth"
|
|
- "traefik.http.middlewares.dashboard-auth.basicauth.usersfile=/etc/traefik/authorized_users"
|
|
command:
|
|
# Enable Docker in Traefik, so that it reads labels from Docker services
|
|
- --providers.docker
|
|
# Add a constraint to only use services with the label "traefik.constraint-label=traefik-public"
|
|
#- --providers.docker.constraints=Label(`traefik.constraint-label`, `traefik-public`)
|
|
# Do not expose all Docker services, only the ones explicitly exposed
|
|
#- --providers.docker.exposedbydefault=false
|
|
# Enable Docker Swarm mode
|
|
- --providers.docker.swarmmode
|
|
# Create an entrypoint "http" listening on port 80
|
|
- --entrypoints.http.address=:80
|
|
# Create an entrypoint "https" listening on port 443
|
|
- --entrypoints.https.address=:443
|
|
# Create the certificate resolver "le" for Let's Encrypt, uses the environment variable EMAIL
|
|
#- --certificatesresolvers.le.acme.email='cboivin@secure-exchanges.com'#$EMAIL
|
|
# Store the Let's Encrypt certificates in the mounted volume
|
|
#- --certificatesresolvers.le.acme.storage=/certificates/acme.json
|
|
# Use the TLS Challenge for Let's Encrypt
|
|
#- --certificatesresolvers.le.acme.tlschallenge=true
|
|
# Enable the access log, with HTTP requests
|
|
- --accesslog
|
|
# Enable the Traefik log, for configurations and errors
|
|
- --log
|
|
# Enable the Dashboard and API
|
|
- --api.insecure=true
|
|
|
|
# Docker engine
|
|
- --providers.docker.endpoint=npipe:////./pipe/docker_engine
|
|
|
|
minecraft-test-docker:
|
|
image: itzg/minecraft-server
|
|
restart: unless-stopped
|
|
volumes:
|
|
- "./mc:/data"
|
|
ports:
|
|
- "25565:25565"
|
|
environment:
|
|
EULA: "TRUE"
|
|
TYPE: FORGE
|
|
VERSION: "1.20.1"
|
|
FORGE_VERSION: "47.2.32"
|
|
ENABLE_AUTOPAUSE: "TRUE"
|
|
INIT_MEMORY: "256M"
|
|
MAX_MEMORY: "25G"
|
|
TZ: "Europe/Berne"
|
|
|
|
OVERRIDE_SERVER_PROPERTIES: "TRUE"
|
|
MAX_TICK_TIME: "-1"
|
|
DIFFICULTY: "normal"
|
|
MODE: "creative"
|
|
MOTD: "Welcome Home"
|
|
|
|
# More aggressive settings for demo purposes
|
|
AUTOPAUSE_TIMEOUT_INIT: "30"
|
|
AUTOPAUSE_TIMEOUT_EST: "10"
|
|
|
|
lazytainer:
|
|
image: ghcr.io/vmorganp/lazytainer:master
|
|
environment:
|
|
VERBOSE: false
|
|
ports:
|
|
- 25565:25565
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
labels:
|
|
- lazytainer.group.minecraft.sleepMethod=stop
|
|
- lazytainer.group.minecraft.ports=25565
|
|
- lazytainer.group.minecraft.minPacketThreshold=2 # Start after two incomming packets
|
|
- lazytainer.group.minecraft.inactiveTimeout=60 # 10 minutes, to allow the server to bootstrap. You can probably make this lower later if you want.
|
|
restart: unless-stopped
|
|
network_mode: bridge
|
|
|
|
minecraft:
|
|
image: 'itzg/minecraft-server'
|
|
restart: unless-stopped
|
|
stdin_open: true
|
|
tty: true
|
|
volumes:
|
|
- "./mc:/data"
|
|
- "./mods:/mods:ro"
|
|
depends_on:
|
|
- lazytainer
|
|
network_mode: service:lazytainer
|
|
environment:
|
|
EULA: "TRUE"
|
|
TYPE: "FORGE"
|
|
|
|
TZ: "Europe/Zurich"
|
|
MAX_TICK_TIME: "-1"
|
|
INIT_MEMORY: 128M
|
|
MAX_MEMORY: 20G
|
|
|
|
#OVERRIDE_SERVER_PROPERTIES: "TRUE"
|
|
#ENABLE_AUTOPAUSE: "TRUE"
|
|
#AUTOPAUSE_TIMEOUT_INIT: "30"
|
|
#AUTOPAUSE_TIMEOUT_EST: "10"
|
|
|
|
|
|
DIFFICULTY: "easy"
|
|
|