コンテナビルド
Learn how to package your game server as a Docker container image for deployment.
読み終わるまでの所要時間 3 分最終更新 25日前
コンテナは、ソフトウェアとそのすべての依存関係を 1 つの単位にまとめる方法です。Multiplay Hosting コンテナビルドを使用すると、ゲームサーバーと依存関係をパッケージ化し、コンテナをビルドして、それを Multiplay Hosting コンテナレジストリにプッシュできます。 コンテナビルドは、ビルドの作成時に Unity Dashboard で Container image (コンテナイメージ) を選択して作成できます。Create build (ビルドの作成) ウィザードにより、サービスアカウントの追加、レジストリの追加、イメージの選択が順に示されます。コンテナイメージを使用したビルドの作成 を参照してください。 Multiplay Hosting は、
<ImageName>:<ImageTag>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>前の例の場合: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" ]
- は、使用するベースイメージのバージョンで置き換えます。使用可能なタグのリストについては、linux-base-image タグ で確認できます。
<tag> - に、コンテナプロセスの現在の作業ディレクトリを設定します。プロセスの実行またはファイルのコピーのアクションはすべて、作業ディレクトリに対して相対的に行われます。
WORKDIR - に、コンテナが開始したときに実行される実行ファイルを指定します。エントリーポイントとして、ゲームサーバーバイナリを使用する必要があります。
ENTRYPOINT
単純な例については、この Simple Game Server Dockerfile (GitHub 上の Unity Multiplay の例) を参照してください。
ゼロからのコンテナビルドの作成
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.jsonserver.json- Linux コンテナの場合は、環境変数内にあります。
$HOME - Windows コンテナの場合は、環境変数内にあります。
$HOMEPATH
server.jsonserver.json