services: minecraft: image: itzg/minecraft-server:latest container_name: minecraft-cross-platform hostname: minecraft-server env_file: - .env environment: # 基本設定 EULA: "TRUE" TYPE: "PAPER" VERSION: "1.21.7" MEMORY: "6G" MAX_PLAYERS: "20" DIFFICULTY: "normal" GAMEMODE: "survival" LEVEL_NAME: "world" MOTD: "For MTM9 Java & Bedrock - Discord Auth" ALLOW_NETHER: "true" ANNOUNCE_PLAYER_ACHIEVEMENTS: "true" ENABLE_COMMAND_BLOCK: "true" FORCE_GAMEMODE: "false" GENERATE_STRUCTURES: "true" HARDCORE: "false" MAX_BUILD_HEIGHT: "319" MAX_WORLD_SIZE: "29999984" PVP: "true" SPAWN_ANIMALS: "true" SPAWN_MONSTERS: "true" SPAWN_NPCS: "true" VIEW_DISTANCE: "10" SIMULATION_DISTANCE: "10" PLUGINS: | https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest/downloads/spigot https://download.geysermc.org/v2/projects/floodgate/versions/latest/builds/latest/downloads/spigot https://download.discordsrv.com/v2/DiscordSRV/DiscordSRV/release/download/latest/jar USE_AIKAR_FLAGS: "true" JVM_OPTS: >- -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 ENABLE_ROLLING_LOGS: "true" LOG4J_FORMAT_MSG_NO_LOOKUPS: "true" LEVEL_TYPE: "minecraft:normal" SEED: "" ENABLE_QUERY: "true" QUERY_PORT: "25565" ENABLE_RCON: "true" RCON_PORT: "25575" RCON_PASSWORD: "${RCON_PASSWORD:-minecraft}" # タイムゾーン TZ: "${TZ:-Asia/Tokyo}" # 環境変数置換を有効化 REPLACE_ENV_IN_PLACE: "true" REPLACE_ENV_DURING_SYNC: "true" ENV_VARIABLE_PREFIX: "CFG_" # DiscordSRV設定用環境変数 CFG_DISCORD_BOT_TOKEN: "${DISCORD_BOT_TOKEN}" CFG_DISCORD_CHANNEL_ID: "${DISCORD_CHANNEL_ID}" CFG_DISCORD_CONSOLE_CHANNEL_ID: "${DISCORD_CONSOLE_CHANNEL_ID:-}" CFG_DISCORD_INVITE_LINK: "${DISCORD_INVITE_LINK}" CFG_DISCORD_REQUIRE_LINKED: "${DISCORD_REQUIRE_LINKED:-true}" CFG_DISCORD_GAME_STATUS: "${DISCORD_GAME_STATUS:-playing Minecraft}" CFG_DISCORD_LINKING_ENABLED: "${DISCORD_LINKING_ENABLED:-true}" CFG_DISCORD_LINKING_TIMEOUT: "${DISCORD_LINKING_TIMEOUT:-600}" CFG_DISCORD_REQUIRE_LINKED_CHAT: "${DISCORD_REQUIRE_LINKED_CHAT:-true}" ports: - "25565:25565" # Java版接続ポート - "19132:19132/udp" # 統合版接続ポート - "25575:25575" # RCON管理ポート volumes: - minecraft-data:/data - ./plugins:/plugins:ro restart: always # ヘルスチェック healthcheck: test: ["CMD", "mc-health"] start_period: 1m interval: 5s retries: 20 # リソース制限 deploy: resources: limits: memory: 12G cpus: '4.0' reservations: memory: 10G cpus: '3.0' # ログ設定 logging: driver: "json-file" options: max-size: "10m" max-file: "5" # 名前付きボリューム volumes: minecraft-data: driver: local # ネットワーク設定 networks: default: name: minecraft-network