Amazon GameLift Servers 用のコンテナイメージを構築する - Amazon GameLift Servers

Amazon GameLift Servers 用のコンテナイメージを構築する

このトピックでは、Amazon GameLift Servers で使用するゲームサーバーソフトウェアでコンテナイメージを作成する方法について説明します。ゲームサーバーコンテナイメージには、ゲームサーバー実行可能ファイルと実行する必要がある依存関係が含まれます。ゲームサーバーコンテナイメージは、Amazon GameLift Servers マネージドコンテナホスティングソリューションで使用されます。完全なソリューションの構築の詳細については、以下を参照してください。

ゲームサーバーコンテナイメージを Amazon GameLift Servers コンテナフリートにデプロイする準備を整えるには、次のタスクを実行します。これらのタスクを開始する前に、ゲームサーバーコードをAmazon GameLift Servers サーバー SDK と統合します。

ゲームサーバーコンテナイメージを作成する

Linux ベースのプラットフォームで作業するとき、または Docker がインストールされている Windows Subsystem for Linux (WSL) を使用するときは、次の手順に従います。

ゲームサーバーコンテナイメージを作成するには
  1. ゲームサーバーソフトウェアを使用して作業ディレクトリを準備します。ローカルマシンで、作業ディレクトリを作成して、ゲームサーバーコンテナのファイルを整理します。コンテナイメージは、ホスティング用の Amazon GameLift Servers リソースにコンテナをデプロイするときに、このファイル構造を使用します。例:

    [~/]$ mkdir -p work/glc/gamebuild && cd work && find . . ./glc ./glc/gamebuild
    注記

    この機能を試みているが、ゲームサーバーをまだ構築していない場合は、GitHub で利用可能なサンプルゲームサーバー SimpleServer をお試しください。

  2. 提供されたテンプレートを使用して新しい Dockerfile を作成します。

  3. Dockerfile テンプレートの指示に従って、独自の使用のために更新します。

    • 必要に応じてベースイメージを更新します。

    • ゲームサーバービルドの環境変数を設定します。

  4. コンテナイメージを構築します。独自のリポジトリ名を指定して、docker build を実行します。例:

    [~/work/glc]$ docker build -t <local repository name>:<optional tag> .

    この例に示すように、docker images コマンドを使用してリポジトリとイメージ ID を表示できます。

このテンプレートには、ゲームサーバーコンテナが Amazon GameLift Servers フリートで使用できるようにするために必要な最小限の手順が含まれています。ゲームサーバーに必要なコンテンツを変更します。

# Base image # ---------- # Add the base image that you want to use, # Make sure to use an image with the same architecture as the # Instance type you are planning to use on your fleets. FROM public.ecr.aws/amazonlinux/amazonlinux # # Game build directory # -------------------- # Add your gamebuild directory to the env variable below. # The game build provided here needs to be integrated with server sdk for Amazon GameLift Servers. ENV GAME_BUILD_DIRECTORY="<ADD_GAME_BUILD_DIRECTORY>" \ # # Game executable and launch parameters # --------------- # Add the relative path to your executable in the 'GAME_EXECUTABLE' env variable below. # The game build provided over here needs to be integrated with server sdk for Amazon GameLift Servers. # This template assumes that the executable path is relative to the game build directory. # Add any launch parameters to pass into your executable in the 'LAUNCH_PARAMS' env variable below. # Add 'HOME_DIR' to identify where the game executable and logs exist. GAME_EXECUTABLE="<ADD NAME OF EXECUTABLE WITHIN THE GAME DIRECTORY>" \ LAUNCH_PARAMS=<ADD LAUNCH PARAMETERS> \ HOME_DIR="/local/game" \ # Install dependencies as necessary RUN yum install -y shadow-utils RUN mkdir -p $HOME_DIR COPY ./$GAME_BUILD_DIRECTORY/ $HOME_DIR # Change directory to home WORKDIR $HOME_DIR # Set up for 'gamelift' user RUN useradd -m gamelift && \ echo "gamelift ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \ chown -R gamelift:gamelift $HOME_DIR # Add permissions to game build RUN chmod +x ./$GAME_EXECUTABLE USER gamelift # Check directory before starting the container RUN ls -lhrt . # Check path before starting the container RUN echo $PATH # Start the game build ENTRYPOINT ["/bin/sh", "-c", "./$GAME_EXECUTABLE", "$LAUNCH_PARAMS"]

コンテナイメージを Amazon ECR にプッシュする

Amazon GameLift Servers にデプロイするコンテナイメージを作成したら、そのイメージを Amazon ECR のパブリックリポジトリまたはプライベートリポジトリに保存します。このリポジトリには URI 値が割り当てられ、Amazon GameLift Servers を使用してコンテナフリートにデプロイするためのイメージのスナップショットを作成します。

注記

Amazon ECR プライベートリポジトリがまだない場合は、作成します

コンテナイメージを Amazon ECR にプッシュする
  1. Amazon ECR 認証情報を取得します。コンテナイメージを Amazon ECR にプッシュする前に、まず一時的な形式で AWS 認証情報を取得し、Docker に提供します。Docker では、ログインにこれらの認証情報が必要です。

    [~/work/glc]$ aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.us-west-2.amazonaws.com WARNING! Your password will be stored unencrypted in /home/user-name/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded
  2. 使用する Amazon ECR プライベートリポジトリの URI をコピーします。

  3. コンテナイメージに Amazon ECR タグを付与します。

    [~/work/glc]$ docker tag <IMAGE ID from above> <Amazon ECR private repository URI>:<optional tag>
  4. コンテナイメージを Amazon ECR にプッシュする

    [~/work/glc]$ docker image push <Amazon ECR private repository URI>