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

Pocket

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

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

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

Dockerfile

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"]

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

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

docker-compose.yml

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

.env

RCON_PASSWORD="aaaaaaa"
discordBotToken="ABCDEFGHIJK1234657dsaldjslakdjlsak"
discordChannel="123456123345123345"

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

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください