要开始使用 Nakama 进行开发,首先需要将它安装在开发机器上。这很简单,只需要几分钟。在本指南中,我们将重点介绍如何使用 Docker 安装 Nakama 开发实例。
"推荐的方法" Docker 是下载并开始使用 Nakama 进行开发的最快方法。对于生产环境设置,我们建议您将 Nakama 安装为 binary,以确保 Nakama 可以使用所有系统资源。
有一个单一的,最小的 Nakama 镜像包含 Nakama 二进制。基本格式为:
docker run heroiclabs/nakama <command> [options]
"数据库服务器" Nakama 需要一个数据库服务器运行。确保在 Nakama 之前启动数据库,或者使用 docker-compose 来运行两者。
使用 Docker 安装 Nakama 是理想的,原因有以下几点:
Docker 是一个开源的容器化工具,它可以让你创建多个不同的 Linux 环境,每个环境都是独立的。
在 Docker 容器中,你可以运行一套工具来完成特定的工作;在本例中,我们将让一个容器运行 Nakama,另一个运行 CockroachDB。您可以将 Docker 容器视为轻量级虚拟机。
有两种方法来运行Nakama和Cockroach:
您可以运行 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 简化了同时运行多个 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
...
docker-compose
相同的目录中创建一个名为 nakama
的文件夹。/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 来直接检查和操作数据。
如果你通过 Docker-Compose 运行 Nakama,尝试以下命令:
docker ps
获取与上面描述相匹配的运行容器的名称,然后运行以下命令:
docker exec -it "cockroachdb" /cockroach/cockroach sql --insecure -d nakama
其中 cockroachdb
是从第一个命令获取的容器名。
如果您需要临时暂停 Docker 容器而不丢失这些容器的状态,则有两种选择:
docker-compose stop
,所有容器将正常关闭。您可以通过运行 docker-compose up
重新激活它们。
要停止容器并清除所有存储的数据,请运行 docker-compose down
。
通过 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;