LoginSignup
6
0

More than 1 year has passed since last update.

Docker上でPocketMine-MPを動かそう

Last updated at Posted at 2021-11-30

PocketMine-MPはDockerのコンテナ上で動かすことができます。
Docker とは開発者やシステム管理者が、コンテナでアプリケーションを 構築(build)、実行(run)、共有(share)するためのプラットフォームです。1

Dockerをインストール・セットアップしよう

上記のリンクからWindows/MacでのDocker Desktopがインストールできます。
インストールが終わった後に起動するとチュートリアルが始まります。
一通りやっておくと、この後の操作が理解しやすくなると思います。

注意 Windows Homeの場合はWSL2を有効にする必要があります。詳細は https://docs.docker.jp/docker-for-windows/install-windows-home.html を確認してください。

DockerでPocketMine-MPを動かしてみよう

ここからが本題です。実際にPocketMine-MPをDocker上で動かしてみましょう。
PocketMine-MPは公式がDockerイメージを以下のリンクで公開しています。

英語版ですがそんなに難しい内容にはなっていないはずです。

1. Dockerイメージをダウンロードする

端末やWindowsターミナル上などでdocker pull pmmp/pocketmine-mpを実行してDockerダウンロードします。

2.プラグイン用のディレクトリとデータ用のディレクトリを作成する

サーバーのデータを保持しておくディレクトリを決めて、その中にpluginsディレクトリとdataディレクトリを作ります。

3. コンテナを立ち上げる。

Windowsの場合

docker run -it -p 19132:19132/udp -v {上で決めたディレクトリへのパス}\\data:/data -v {上で決めたディレクトリへのパス}\\plugins:/plugins pmmp/pocketmine-mp


Mac/Linuxの場合は端末上で上のディレクトリを開いた状態で、

docker run -it -p 19132:19132/udp -v $PWD/data:/data -v $PWD/plugins:/plugins pmmp/pocketmine-mp

を実行して起動します。
うまく起動するとサーバーのログが見れるはずです。
そのほかは通常のPocketMine-MPと同じように使うことができます。開けるポートが違うときには-pオプションでそれに対応するポートをしてしてください。

シナリオ: MySQLを使うプラグインを使用する

この章ではdocker-composeを使用してDockerの要素をより使ってサーバーを構築することを考えます。特に、MySQLを使うプラグインと合わせて使うことを考えます。

1. docket-compose.ymlを記述する。

version: "3"

services:
  pocketmine-server:
    image: pmmp/pocketmine-mp:latest # どのイメージを使うか、今回は最新版イメージを指定した。
    ports:
      - "19132:19132/udp" 
    depends_on:
      - mysql # mysqlサービスに対応していることを表す。
    volumes:
      - 'C:\Devs\plugin-dev\MyChunkLand:/plugins' # 一例、絶対パスで実機:コンテナ上のディレクトリを対応させる。
      - 'C:\Devs\plugin-dev\data:/data'
  mysql:
    image: mysql
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: password # rootユーザーのパスワードを指定する
    ports:
      - "3308:3306" # Docker上のmysqlコンテナのポート3306を実機上のポート3308に対応させる

上のようなファイルを記述しdocker-compose.ymlとして保存します。

2. docker-composeで立ち上げる

そのディレクトリをカレントディレクトリにした状態で以下を実行すると、pocketmine-serverコンテナとmysqlコンテナを立ち上げられます。

docker-compose up

3. プラグインで設定をする

この状態でいったんサーバーを停止してからプラグインの設定をします。

例えば、Ree-jp-minecraftさんのStackStorageプラグイン(GitHubリンク)では、以下のような設定にすると、対応ができます。

database:
  # mysql or sqlite
  type: mysql # MySQLを選択

    # Edit these settings only if you choose "sqlite".
  sqlite:
    # The file name of the database in the plugin data folder.
  # You can also put an absolute path here.
    file: data.sqlite
  # Edit these settings only if you choose "mysql".
  mysql:
    host: mysql #ホストをコンテナ名に変更
    # Avoid using the "root" user for security reasons.
    username: StackStorage #データベース内のユーザー名に対応
    password: password #対応するパスワードへ
    # Database name
    schema: StackStorage 
  # The maximum number of simultaneous SQL queries
  # Recommended: 1 for sqlite, 2 for MySQL. You may want to further increase this value if your MySQL connection is very slow.
  worker-limit: 1

ホストマシン側からはMySQLはポート3308からアクセスできます。
このプラグインであればデータベースにアクセスして以下のコマンドを実行することで一連の初期設定が終わります。

CREATE DATABASE StackStorage;
CREATE USER StackStorage IDENTIFIED BY 'password';
GRANT ALL on StackStorage.* to StackStorage;

ほかのプラグインについてもホストとユーザー、パスワードとスキーマをプラグインの指示に従い適切に設定することで動作させることができます。

まとめ

  • PocketMine-MPはDockerコンテナ上で動作できる。
  • Dockerを使うとMySQLやその他の対応するサービスを一括で管理できる。

Dockerはいろいろなコンテナが対応しているのでサーバーを一括で管理するに役立ちます。この機会に一度お試しを!

6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0