建立和部署 Linux 容器映像
本節概述協助您建立和部署 Linux 容器映像的具體步驟。 如建立虛擬機器 (VM) 中所述,使用我們的服務時,您可以設定 VM,使其根據您的預算和需求在全球自動啟動為遊戲伺服器。為此,您不需要明確建立 VM,而是定義參數來決定如何代表您建立 VM。此程序稱為部署或建立組建。 PlayFab 多人遊戲伺服器可以部署 Linux 型和 Windows 型遊戲伺服器。Linux 容器的組建部署方式與 Windows 容器類似,但有一些重要差異。若要深入了解,請參閱 Windows 和 Linux 容器映像的差異。如果您想要使用 PowerShell/API 管理 Linux 容器,請參閱使用 API 管理 Linux 容器映像。 使用 Linux 型遊戲伺服器時,您必須建立容器映像並上傳至容器登錄,而不是使用受控容器映像。為了讓您輕鬆上傳容器,您的帳戶附有一個 Azure 容器登錄。必要知識
設定您的 Windows 開發裝置
只有在您想要使用 Windows 開發裝置建立 Linux 容器映像時,才需要此步驟。或者,您可以使用已安裝 Docker 的 Linux 作業系統裝置、VM 或雙作業系統。 Windows 子系統 Linux 版 (WSL) 可讓您在熟悉的 Windows 環境中使用開發裝置來撰寫和管理 Linux 容器映像。使用 WSL 表示您不需要承擔傳統 Linux 虛擬機器或雙重開機設定的額外負荷。- 安裝 WSL 2。請確定您已重新啟動電腦並使用 WSL 2。您也需要安裝 Linux 核心更新套件。
- 安裝使用 WSL 的 Linux 發行版本。雖然我們的 VM 使用 Ubuntu,但您可以為容器映像選取任何想要的發行版本。請考慮使用 Ubuntu 20.04 長期支援 (LTS) 或更新版本。
- 使用 WSL 2 安裝 Windows 版 Docker Desktop。如需直接下載連結,請前往 Windows 版 Docker Desktop (外部)。
- 開啟 PowerShell
- 執行 wsl -l -v,檢查 docker-desktop 和 ubuntu 應用程式是否都在執行 WSL 2 (版本 2)
- 開啟 WSL 終端機
- 執行 docker version,確認已安裝 Docker 且使用的作業系統為 Linux
取得您的 PlayFab 容器登錄登入認證
Azure 容器登錄帳戶與您的 PlayFab 帳戶相關聯。只有您可以存取上傳至該處的容器。此 Azure 容器登錄是免費的。- 在 Game Manager 中,選取您的遊戲,然後選取 Multiplayer > Servers。選取 New build 以開啟組建建立頁面。
- 選取 Linux 作為虛擬機器作業系統。
- 記下登入認證—名稱、密碼和 customer5555555.azurecr.io,因為稍後需要這些資訊
建立 Linux 容器映像並推送至 Azure Container Registry
這些步驟可協助您建立並推送自訂 Linux 容器映像。將遊戲伺服器應用程式與 GSDK 整合
與使用 Windows 伺服器類似,您必須將遊戲伺服器程式碼與 PlayFab 多人遊戲伺服器 SDK (GSDK) 整合。GSDK 整合可以是容器映像的一部分。 如需指示,請參閱撰寫遊戲伺服器組建和將您的遊戲與 PlayFab 遊戲伺服器 SDK (GSDK) 整合。建立 Dockerfile
Dockerfile 是沒有副檔名的文字檔,包含建置指定容器映像所需的所有命令。- 開啟__記事本__或任何合適的編輯器
- 新增執行和建置容器所需的特定命令。如需此檔案的範例,請參閱 Wrapper 範例中提供的 DockerFile。如需如何建立此檔案的詳細資訊,請參閱 Dockerfile 格式 (外部) 和建立 Dockerfile 時的最佳做法 (外部)
- 將檔案儲存為 Dockerfile,最好放在空的資料夾/目錄中。您應將建置容器映像所需的其他檔案新增至此資料夾。
- 選取 File> Save as… 以開啟儲存選項
- 前往您要儲存檔案的資料夾
- 在 File name: 下,使用 “Dockerfile”,包括引號。
- 對於 Save as type:,選取 All Files
- 選取 UTF-8 編碼
- 選取 Save
建置並上傳 Linux 容器映像
- 開啟已安裝 Docker 的 Linux 終端機。
- 使用先前步驟取得的登入認證執行下列 Docker 命令。然後依照螢幕上的指示輸入您的使用者名稱和密碼。
- 建置容器映像
- 接著執行 cd /mnt/c/path/to/your/Dockerfile,切換至 Dockerfile 所在的路徑。 如需詳細資訊,請參閱存取 C 磁碟機。
- 上傳容器映像
檢查您的容器是否已上傳
上傳容器後,返回 Game Manager 中的 New Build 頁面,然後選取 Refresh Images。您將能在清單中看到並選取該映像。或者,您可以使用 ListContainerImages API 呼叫列出已上傳的容器映像。 現在您已準備好部署伺服器。如需指示,請參閱 PlayFab 入口網站—Game Manager 和使用 PowerShell/API。Windows 和 Linux 容器映像的差異
對於許多開發人員來說,使用 Windows 受控容器是偏好的簡單預設選擇。不過,部署在虛擬機器上的 Linux 容器映像享有較便宜的每小時費率。無論您使用 Windows 還是 Linux 容器映像,都可以完全自訂您的遊戲伺服器。使用 Windows 伺服器時,您可以透過上傳資產來自訂受控容器映像。
使用 API 管理 Linux 容器映像
您可以使用 API 管理 Linux 容器映像。對於組建生命週期的其餘部分 (檢視使用量、更新區域和待命設定、刪除),請使用 Game Manager 進行管理。- GetContainerRegistryCredentials:擷取容器登錄位址、使用者名稱和密碼
- ListContainerImages 和 ListContainerImageTags:確定已列出您的新映像和標記 (有時映像可能需要幾分鐘才能在系統中完全註冊)
- CreateBuildWithCustomContainer:使用自訂容器建立組建。指定您先前上傳的已標記映像。確定要求上已設定下列屬性:
- ContainerImageReference - 先前上傳的映像名稱和標記。這些值可在 ListContainerImages 和 ListContainerImageTags 中看到。
- ContainerFlavor - “CustomLinux”
- ContainerRunCommand (選用) - 如果您的容器沒有預設命令,請使用此屬性提供要執行的命令以及任何引數。
為 Linux 處理序型伺服器封裝資產
以處理序模式 (而非容器模式) 使用 Linux 時,您需要將遊戲伺服器上傳為資產封存,而不是容器映像。本節涵蓋重要的封裝需求。支援的封存格式
資產應上傳為.tar.gz 或 .tar 檔案,以便在解壓縮期間保留 Unix 檔案權限 (例如執行位元)。
Tar.gz 和 tar 封存結構需求
解壓縮.tar 或 .tar.gz 封存時,PlayFab 多人遊戲伺服器會移除封存中的第一層目錄 (相當於 tar --strip-components=1)。您的封存必須包含單一最上層包裝目錄,並將所有遊戲檔案放在其中。
正確的結構——檔案位於最上層目錄內:
設定啟動命令
對於處理序型伺服器,啟動命令應相對於解壓縮後的根資產資料夾 (也就是相對於移除最上層目錄後檔案最終所在的位置)。 例如,如果您的封存包含MyGameServer/MyGame.x86_64,解壓縮後該檔案會位於資產資料夾的根目錄。將啟動命令設定為:
MyGameServer/bin/MyGame.x86_64),請將啟動命令設定為:
使用 API 管理 Linux 處理序型組建
您可以使用 API 管理 Linux 處理序型組建。對於組建生命週期的其餘部分 (檢視使用量、更新區域和待命設定、刪除),請使用 Game Manager 進行管理。- CreateBuildWithProcessBasedServer:建立遊戲伺服器以處理序形式執行的組建。確定要求上已設定下列屬性:
- OsPlatform - “Linux”
- GameAssetReferences - 遊戲資產清單 (以
.tar.gz或.tar檔案上傳)。每個資產都需要與上傳之資產名稱相符的 FileName。 - StartMultiplayerServerCommand - 遊戲伺服器啟動時要執行的命令。路徑應相對於解壓縮後的根資產資料夾 (例如
MyGame.x86_64 -server)。 - Ports - 要為組建對應的連接埠。
- MultiplayerServerCountPerVm - 單一 VM 上要裝載的遊戲伺服器執行個體數目。
- RegionConfigurations - 要部署至的區域,以及待命伺服器數和伺服器數上限。
