容器版本
Learn how to package your game server as a Docker container image for deployment.
阅读时间4 分钟最后更新于 15 天前
采用容器方法可以将软件及其所有依赖项打包成一个单元。Multiplay Hosting 容器版本支持将游戏服务器及其依赖项进行打包、构建一个容器并将其推送到 Multiplay Hosting 容器注册表。 您可以通过在 Unity Cloud 后台中创建版本时选择 **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 版本时,您可选择使用多种方式来上传版本文件。一种方式是使用 Docker 和 Multiplay Hosting 容器注册表来上传版本的容器化版本。不过,版本容器必须满足特定要求(除一般要求外),您才能使用容器化的版本。使用基础镜像来创建容器版本
linux-build-image 模板容器可满足使用容器版本的大多数额外要求。您可以通过将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
如需查看简单示例,请参阅此简单游戏服务器 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