Minecordをdocker-composeで動かしている話

minecraftのチャットをdiscordと連携できるツール「Minecord」をdockerで運用しています

まずは元ツール紹介 ModなしでMinecraftサーバーとDiscordを連携するツールを作った

今の時代、minecraftもdockerで動かしているのでツールもdockerで動かしたいなーと思った次第 Spigot?DiscordSRV?知らない子ですね?

まずminecraftのdokcer-compose紹介 volumesはいい感じの場所へどうぞ RCON_PASSWORDとRCON_PORTはminecraftを動かすだけなら無くても良いです 再起動で最新にしてくれるしバニラ鯖の運用だったらitzg/minecraft-serverで良いですね

docker-compose.yml [shell gutter="false"] version: '3.8'

services: minecraft: image: itzg/minecraft-server ports: - "25565:25565" volumes: - "./data:/data" environment: EULA: "TRUE" CONSOLE: "false" ENABLE_RCON: "true" RCON_PASSWORD: ${RCON_PASSWORD} RCON_PORT: 25575 MEMORY: "8G" restart: always [/shell]

本題 別にnpmでインストールするだけでいいじゃんなのでそれを作った あと環境変数でRCON_PASSWORDやdiscordのtokenを渡せるようにしただけ

Dockerfile [shell gutter="false"] FROM node:12

RUN npm install -g minecord

ENV enable="chat,login,whitelist,server" \ minecraftLog="/var/log/minecraft/latest.log" \ minecraftRconHost="minecraft" \ minecraftRconPort="25575" \ minecraftRconPassword="rconpass" \ discordBotToken="dtoken" \ discordChannel="12345678"

CMD ["sh", "-c", "/usr/local/bin/minecord --enable "$enable" --minecraft-log $minecraftLog --minecraft-rcon-host $minecraftRconHost --minecraft-rcon-port $minecraftRconPort --minecraft-rcon-password $minecraftRconPassword --discord-bot-token $discordBotToken --discord-channel $discordChannel"] [/shell]

docker buildしてイメージを作る 今回は astail/minecord とした

そしてminecraftのdocker-composeと合わせてこうなる

docker-compose.yml [shell gutter="false"] version: '3.8'

services: minecraft: image: itzg/minecraft-server ports: - "25565:25565" volumes: - "./data:/data" environment: EULA: "TRUE" CONSOLE: "false" ENABLE_RCON: "true" RCON_PASSWORD: ${RCON_PASSWORD} RCON_PORT: 25575 MEMORY: "8G" restart: always

minecord: image: astail/minecord volumes: - "./data/logs:/var/log/minecraft" depends_on: - minecraft environment: enable: "chat" minecraftRconHost: minecraft minecraftRconPort: 25575 minecraftRconPassword: ${RCON_PASSWORD} discordBotToken: ${discordBotToken} discordChannel: ${discordChannel} restart: always [/shell]

.env [shell gutter="false"] RCON_PASSWORD="aaaaaaa" discordBotToken="ABCDEFGHIJK1234657dsaldjslakdjlsak" discordChannel="123456123345123345" [/shell]

これでチャットがdiscordで打ったものがminecraftminecraftに打ったものがdiscordにいくようになる