ドキュメント

サポート

Multiplay Hosting

Multiplay Hosting

コンテナビルド

Learn how to package your game server as a Docker container image for deployment.
読み終わるまでの所要時間 3 分最終更新 25日前

コンテナは、ソフトウェアとそのすべての依存関係を 1 つの単位にまとめる方法です。Multiplay Hosting コンテナビルドを使用すると、ゲームサーバーと依存関係をパッケージ化し、コンテナをビルドして、それを Multiplay Hosting コンテナレジストリにプッシュできます。 コンテナビルドは、ビルドの作成時に Unity DashboardContainer image (コンテナイメージ) を選択して作成できます。Create build (ビルドの作成) ウィザードにより、サービスアカウントの追加、レジストリの追加、イメージの選択が順に示されます。コンテナイメージを使用したビルドの作成 を参照してください。 Multiplay Hosting は、
<ImageName>:<ImageTag>
という形式の Docker コンテナタグを使用します。Multiplay Hosting によって、ビルドの正しい名前とタグが作成され、コンテナビルドを作成または更新するときに Unity Dashboard に表示されます。
docker tag <ImageName>:<ImageTag> registry.multiplay.com/4818982f-bb28-4c39-9d44-628204b6780e/1ae4de65-849d-4ff1-86fc-1de3bdfbd891/12788:v1

コンテナビルドの要件

Multiplay Hosting ビルドを作成する場合、ビルドファイルをアップロードするためのいくつかのオプションがあります。1 つのオプションは、Docker と Multiplay Hosting コンテナレジストリを使用してビルドのコンテナ化バージョンをアップロードすることです。ただし、コンテナ化されたビルドを使用する前に、ビルドコンテナが (一般要件 に加えて) 特定の要件を満たす必要があります。

ベースイメージを使用したコンテナビルドの作成

linux-build-image テンプレートコンテナは、コンテナビルドの使用に関するほとんどの追加要件に対処します。以下のコードに示すように、Dockerfile の先頭に
FROM unitymultiplay/linux-base-image:<tag>
を加えると、コンテナを使用できます。詳細については、Dockerfile リファレンス (Docker ドキュメント) を参照してください。
FROM unitymultiplay/linux-base-image:<tag># copy game files here##copy-game-files-here# for example:##for-example:WORKDIR /gameCOPY --chown=mpukgame . .# set your game binary as the entrypoint##set-your-game-binary-as-the-entrypointENTRYPOINT [ "./gamebinary" ]
前の例の場合:
  • <tag>
    は、使用するベースイメージのバージョンで置き換えます。使用可能なタグのリストについては、linux-base-image タグ で確認できます。
  • WORKDIR
    に、コンテナプロセスの現在の作業ディレクトリを設定します。プロセスの実行またはファイルのコピーのアクションはすべて、作業ディレクトリに対して相対的に行われます。
  • ENTRYPOINT
    に、コンテナが開始したときに実行される実行ファイルを指定します。エントリーポイントとして、ゲームサーバーバイナリを使用する必要があります。
単純な例については、この Simple Game Server Dockerfile (GitHub 上の Unity Multiplay の例) を参照してください。

ゼロからのコンテナビルドの作成

Dockerfile をゼロから作成する場合は、コンテナが以下の要件を満たしていることの確認に責任を負うことになります。
要件説明
USER mpukgame
コンテナでは、
mpukgame
USER
として使用する必要があります。このユーザーは、2000 のグループ識別子 (GID) と 2000 のユーザー識別子 (UID) を持っている必要があります。
ENTRYPOINT
コンテナには
ENTRYPOINT
が必要です。
以下のコードブロックは、これらの要件を満たす単純な Dockerfile です。
# ========================================================##========================================================-# Unity base image stuff##unity-base-image-stuff------------------# ========================================================##========================================================-FROM ubuntu:20.04 AS mpukRUN addgroup --gid 2000 mpukgame && \ useradd -g 2000 -u 2000 -ms /bin/sh mpukgame && \ mkdir /game && \ chown mpukgame:mpukgame /game && \ apt update && \ apt upgrade && \ apt install -y ca-certificatesUSER mpukgame# ========================================================##========================================================-# Custom game stuff##custom-game-stuff---------------------# ========================================================##========================================================-FROM mpuk AS game# copy game files here##copy-game-files-here# for example:##for-example:WORKDIR /gameCOPY --chown=mpukgame . .# set your game binary as the entrypoint##set-your-game-binary-as-the-entrypointENTRYPOINT [ "./gamebinary" ]

Steam にアップロードされたサーバービルドを使用したコンテナビルドの作成

Steam にアップロードされたゲームサーバービルドで使用するコンテナビルドをアップロードするために、SteamCMD を使用してコンテナイメージを作成できます。 以下のコードブロックは、SteamCMD プロセスの Dockerfile の例です。
# ========================================================##========================================================-# SteamCMD stuff##steamcmd-stuff-----------------------# ========================================================##========================================================-FROM steamcmd/steamcmd:ubuntu-20 AS steamcmdWORKDIR /gameCOPY update.txt /data/update.txtRUN steamcmd +runscript /data/update.txt# if you want to avoid having the update.txt file, use:##if-you-want-to-avoid-having-the-update.txt-file,-use:# RUN steamcmd +force_install_dir /game/<game_name> \##run-steamcmd-+force_install_dir-/game/game_name-# +login anonymous +app_update <steam_appid> validate +quit##+login-anonymous-+app_update-steam_appid-validate-+quit# ========================================================##========================================================-# Unity base image stuff##unity-base-image-stuff------------------# ========================================================##========================================================-FROM ubuntu:20.04 AS mpukRUN addgroup --gid 2000 mpukgame && \ useradd -g 2000 -u 2000 -ms /bin/sh mpukgame && \ mkdir /game && \ chown mpukgame:mpukgame /game && \ apt update && \ apt upgrade && \ apt install -y ca-certificates lib32z1USER mpukgame# ========================================================##========================================================-# Custom game stuff##custom-game-stuff---------------------# ========================================================##========================================================-WORKDIR /gameCOPY --from=steamcmd --chown=mpukgame:mpukgame /game/<game_name> /game/<game_name># set your game binary as the entrypoint##set-your-game-binary-as-the-entrypointENTRYPOINT [ "./game_binary" ]

Server.json ファイル

ベースコンテナイメージを使用している場合、
server.json
ファイルはすでにコンテナにマウントされています。コンテナのホーム環境変数を確認して、
server.json
ファイルの場所を探すことができます。
  • Linux コンテナの場合は、
    $HOME
    環境変数内にあります。
  • Windows コンテナの場合は、
    $HOMEPATH
    環境変数内にあります。
コンテナビルドをゼロから作成するには、独自の
server.json
ファイルを作成して、それをコンテナイメージに加えます。このファイルの形式については Server.json
server.json
の変数の説明については 構成変数 を参照してください。