要开始使用 Nakama 进行开发,首先需要将它安装在开发机器上。这很简单,只需要几分钟。在本指南中,我们将重点介绍如何使用 Docker 安装 Nakama 开发实例。
"推荐的方法" Docker 是下载并开始使用 Nakama 进行开发的最快方法。对于生产环境设置,我们建议您将 Nakama 安装为 binary,以确保 Nakama 可以使用所有系统资源。
有一个单一的,最小的 Nakama 镜像包含 Nakama 二进制。基本格式为:
docker run heroiclabs/nakama <command> [options]
"数据库服务器" Nakama 需要一个数据库服务器运行。确保在 Nakama 之前启动数据库,或者使用 docker-compose 来运行两者。
使用 Docker 安装 Nakama 是理想的,原因有以下几点:
- 您安装到一个纯净的环境
- 您可以一次性获得所需的一切,包括 CockroachDB
- 您可以进行快照、重新安装和删除 Nakama,而不会影响您的主要操作系统。
- 这也意味着无论开发机器运行 Windows、MacOS 还是 Linux,安装指令都是相同的。
什么是 Docker?
Docker 是一个开源的容器化工具,它可以让你创建多个不同的 Linux 环境,每个环境都是独立的。
在 Docker 容器中,你可以运行一套工具来完成特定的工作;在本例中,我们将让一个容器运行 Nakama,另一个运行 CockroachDB。您可以将 Docker 容器视为轻量级虚拟机。
- 如果你想在 Mac、Linux 和 Windows 10 Pro 版上安装 Docker,请遵循本指南。
- 如果您正在 Windows 7、8 或 10 家庭(非专业版)版本上安装 Docker,则需要 Docker Toolbox。
- 使用 Docker Store 查找适合您环境的 Docker Community Edition 的正确版本。
运行 Nakama
有两种方法来运行Nakama和Cockroach:
- 不用 Docker Compose
- 用 Docker Compose
不使用 Docker Compose 运行 Nakama
您可以运行 Nakama 和 Cockroach 而不使用 Docker-Compose。这意味着你可以更好地控制它们的启动方式和不同的数据卷选项,但话说回来,你必须配置两个容器:
=== "Shell" shell # 拉取并启动 CockroachDB docker run --name=db -p 26257 -p 8080 cockroachdb/cockroach start --insecure # 拉取并迁移数据库 docker run --link=db heroiclabs/nakama migrate up --database.address root@db:26257 # 启动 Nakama 服务器 docker run --link=db -p 7350:7350 -p 7351:7351 heroiclabs/nakama --database.address root@db:26257
使用以下命令连接到数据库 SQL shell
:
docker exec -it "db" /cockroach/cockroach sql --insecure -d nakama
您还可以通过编辑最后一行更改 Nakama 配置选项。例如:
docker run --link=db -p 7350:7350 -p 7351:7351 heroiclabs/nakama --database.address root@db:26257 --config /path/to/config.yml --socket.server_key "mynewkey"
使用 Docker Compose 运行 Nakama
Docker Compose 简化了同时运行多个 Docker 容器。对于 Nakama,我们需要两个容器:一个用于 Nakama 本身,另一个用于它所依赖的数据库 CockroachDB。
您可以选择在不使用 Docker Compose 的情况下配置 Nakama 和 CockroachDB 容器,但是我们不建议您在开始时使用它。
Docker Compose 使用 YAML 配置文件来声明要使用的容器以及它们如何协同工作。
1. 首先创建 Nakama Docker-Compose 文件:
创建一个名为 docker-compose.yml
的文件,并在您喜欢的文本编辑器中对其进行编辑:
"docker-compose.yml"
version: '3' services: cockroachdb: container_name: cockroachdb image: cockroachdb/cockroach:v19.2.5 command: start --insecure --store=attrs=ssd,path=/var/lib/cockroach/ restart: always volumes: - data:/var/lib/cockroach expose: - "8080" - "26257" ports: - "26257:26257" - "8080:8080" nakama: container_name: nakama image: heroiclabs/nakama:2.12.0 entrypoint: - "/bin/sh" - "-ecx" - > /nakama/nakama migrate up --database.address root@cockroachdb:26257 && exec /nakama/nakama --name nakama1 --database.address root@cockroachdb:26257 restart: always links: - "cockroachdb:db" depends_on: - cockroachdb volumes: - ./:/nakama/data expose: - "7349" - "7350" - "7351" ports: - "7349:7349" - "7350:7350" - "7351:7351" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:7350/"] interval: 10s timeout: 5s retries: 5 volumes: data:
!!! warning "Windows 用户" 如果您尝试在 Windows 上通过 Docker-Compose 运行 Nakama,则需要对下载的 docker-compose.yml
文件进行少量更改。请按照以下说明绑定正确的路径。
如果日志输出未立即显示在 stdout 中,则将 `tty: true` 添加到 `docker-compose.yml` 文件中的 nakama service。
2. 接下来,我们将要求 Docker Compose 按照我们刚刚下载的文件中的说明进行操作:
docker-compose -f docker-compose.yml up
Docker Compose 将下载在 Docker Hub 上发布的最新 CockroachDB 和 Nakama 映像。
3. 现在,您的计算机上同时运行了 CockroachDB 和 Nakama,分别在127.0.0.1:26257
和 127.0.0.1:7350
上可用。
数据
Docker 容器在设计上是 ephemeral(短暂的):删除容器时,您将丢失存储在其中的数据。
出于开发目的,我们建议您将本地计算机文件系统中的文件夹绑定到 Docker 文件系统。实现此目的的最简单方法是编辑 docker-compose.yml
文件:
"docker-compose.yml"
... nakama: volumes: - ./nakama/data:/nakama/data # Edit this line ...
- 在 Mac 和 Linux 系统上,上面突出显示的路径将在与运行
docker-compose
相同的目录中创建一个名为nakama
的文件夹。 - 在 Windows 上,您需要更新上面的路径,以便 Docker 可以正确地绑定该文件夹。一个有效值可以是这样的:
/c/Users/<username>/projects/docker:/nakama/data
.
!!! warning "Windows上的驱动器绑定" 如果以上路径未更改或不可用,Docker 将告诉你未共享的驱动器。错误看起来像这样:
`ERROR: for bin_nakama_1 Cannot create container for service nakama: Drive has not been shared` 请确保将上面高亮显示的行更改为正确的路径,并重新启动 Nakama。
您可以将 Lua 脚本放在 /modules
目录中,并使用 docker-compose restart
重新启动Nakama。
配置
当通过 Docker-compose 运行时,你有两个选项来覆盖 Nakama 的配置:
- 添加单独的命令行标志:
"docker-compose.yml"
... nakama: entrypoint: - "/bin/sh" - "-ecx" - > /nakama/nakama migrate up --database.address root@cockroachdb:26257 && /nakama/nakama --name nakama1 --database.address root@cockroachdb:26257 --socket.server_key "mynewkey" ...
- 添加配置文件
将您的配置文件放在我们上面设置的 data
卷中,并引用到 Nakama:
"docker-compose.yml"
... nakama: entrypoint: - "/bin/sh" - "-ecx" - > /nakama/nakama migrate up --database.address root@cockroachdb:26257 && /nakama/nakama --config /nakama/data/config.yml ...
日志
容器内生成的日志作为 docker-compose
输出的一部分打印到控制台,您可以在与 docker-compose.yml
文件相同的目录中使用 docker-compose logs
访问它们。
打开 SQL Shell
如果愿意,可以打开数据库的 SQL shell 来直接检查和操作数据。
如果你通过 Docker-Compose 运行 Nakama,尝试以下命令:
docker ps
获取与上面描述相匹配的运行容器的名称,然后运行以下命令:
docker exec -it "cockroachdb" /cockroach/cockroach sql --insecure -d nakama
其中 cockroachdb
是从第一个命令获取的容器名。
停止容器
如果您需要临时暂停 Docker 容器而不丢失这些容器的状态,则有两种选择:
- 在当前运行 docker-compose 的终端中,按 CTRL-C。
- 或者在与 docker-compose.yml 相同的目录中运行
docker-compose stop
,所有容器将正常关闭。
您可以通过运行 docker-compose up
重新激活它们。
要停止容器并清除所有存储的数据,请运行 docker-compose down
。
连接 Nakama 客户端
通过 Docker 运行 Nakama 之后,请使用以下连接详细信息来配置您的客户端以连接到服务器:
Host: 127.0.0.1
(or localhost
) Port : 7350
SSL: False
Server Key: defaultkey
在 JavaScript 客户端中,您可以创建一个 client
,如下所示:
var client = new nakamajs.Client("defaultkey", "127.0.0.1", 7350); client.ssl = false;