使用Docker Compose安装Nakama #

Docker是下载并使用Nakama开始开发的最快捷的方式。通过使用Docker,您可以:

  • 安装到原始环境
  • 轻松为Nakama安装和运行CockroachDBPostgreSQL数据库
  • 在不影响主操作系统的情况下,拍摄快照、删除和重新安装Nakama
  • 无论使用哪种操作系统,都能享受快速简单的安装体验

参照本指南,您将使用Docker Compose快速轻松定义所有必要的服务并运行您的本地Nakama开发实例。

前提条件 #

继续之前,确保您已安装Docker Desktop

Linux Users
Docker Desktop仅适用于Mac和Windows。您必须为您的发行版单独安装Docker EngineDocker Compose

正在运行Nakama #

  1. 首先为您Nakama服务器创建所在目录,例如:Desktop/nakama
  2. 在该文件夹中创建一个docker-compose.yml文件,并使用首选文本编辑器将其打开。
  3. Heroic Labs提供了两个YML文件供使用:将CockroachDBPostgreSQL用作数据库。

docker-compose.yml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
version: '3'
services:
  cockroachdb:
    image: cockroachdb/cockroach:latest-v23.1
    command: start-single-node --insecure --store=attrs=ssd,path=/var/lib/cockroach/
    restart: "no"
    volumes:
      - data:/var/lib/cockroach
    expose:
      - "8080"
      - "26257"
    ports:
      - "26257:26257"
      - "8080:8080"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/health?ready=1"]
      interval: 3s
      timeout: 3s
      retries: 5
  nakama:
    image: registry.heroiclabs.com/heroiclabs/nakama:3.22.0
    entrypoint:
      - "/bin/sh"
      - "-ecx"
      - >
          /nakama/nakama migrate up --database.address root@cockroachdb:26257 &&
          exec /nakama/nakama --name nakama1 --database.address root@cockroachdb:26257 --logger.level DEBUG --session.token_expiry_sec 7200 --metrics.prometheus_port 9100          
    restart: "no"
    links:
      - "cockroachdb:db"
    depends_on:
      cockroachdb:
        condition: service_healthy
      prometheus:
        condition: service_started
    volumes:
      - ./:/nakama/data
    expose:
      - "7349"
      - "7350"
      - "7351"
      - "9100"
    ports:
      - "7349:7349"
      - "7350:7350"
      - "7351:7351"
    healthcheck:
      test: ["CMD", "/nakama/nakama", "healthcheck"]
      interval: 10s
      timeout: 5s
      retries: 5
  prometheus:
    image: prom/prometheus
    entrypoint: /bin/sh -c
    command: |
      'sh -s <<EOF
        cat > ./prometheus.yml <<EON
      global:
        scrape_interval:     15s
        evaluation_interval: 15s

      scrape_configs:
        - job_name: prometheus
          static_configs:
          - targets: ['localhost:9090']

        - job_name: nakama
          metrics_path: /
          static_configs:
          - targets: ['nakama:9100']
      EON
      prometheus --config.file=./prometheus.yml
      EOF'      
    ports:
      - '9090:9090'
volumes:
  data:

docker-compose-postgres.yml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
version: '3'
services:
  postgres:
    container_name: postgres
    image: postgres:12.2-alpine
    environment:
      - POSTGRES_DB=nakama
      - POSTGRES_PASSWORD=localdb
    volumes:
      - data:/var/lib/postgresql/data
    expose:
      - "8080"
      - "5432"
    ports:
      - "5432:5432"
      - "8080:8080"
    healthcheck:
      test: ["CMD", "pg_isready", "-U", "postgres", "-d", "nakama"]
      interval: 3s
      timeout: 3s
      retries: 5
  nakama:
    container_name: nakama
    image: registry.heroiclabs.com/heroiclabs/nakama:3.22.0
    entrypoint:
      - "/bin/sh"
      - "-ecx"
      - >
          /nakama/nakama migrate up --database.address postgres:localdb@postgres:5432/nakama &&
          exec /nakama/nakama --name nakama1 --database.address postgres:localdb@postgres:5432/nakama --logger.level DEBUG --session.token_expiry_sec 7200          
    restart: always
    links:
      - "postgres:db"
    depends_on:
      postgres:
        condition: service_healthy
    volumes:
      - ./:/nakama/data
    expose:
      - "7349"
      - "7350"
      - "7351"
    ports:
      - "7349:7349"
      - "7350:7350"
      - "7351:7351"
    healthcheck:
      test: ["CMD", "/nakama/nakama", "healthcheck"]
      interval: 10s
      timeout: 5s
      retries: 5
volumes:
  data:

将您的首选项的内容复制并粘贴到您的docker-compose.yml文件中。

Windows Users
您必须编辑docker-compose.yml文件中的nakama:volumes:条目,使其呈现如下:/c/Users/<username>/projects/docker:/nakama/data.
  1. 打开终端窗口并导航到您的Nakama目录。例如:
1
cd desktop/nakama
  1. 要提取所有必需的图像并启动您的应用程序,请运行以下内容:
1
docker compose up
  1. 祝贺!您的Nakama服务器现在已启动并正在运行,可在127.0.0.1:7350上找到。

Nakama容器正在运行
Nakama容器正在运行

使用**“在Visual Studio代码中打开”**按钮(或IDE的按钮)直接编辑您的docker-compose.yml文件。

Nakama控制台 #

您也可以通过将浏览器导航到127.0.0.1:7351来访问Nakama控制台:

Nakama控制台
Nakama控制台

提示登录时,默认凭据为admin:password 。可以通过配置文件或命令行标志更改这些凭据。

配置文件 #

您可为您的Nakama服务器自定义许多配置选项。您可以为您想要设置的所有配置创建YML文件,并将这个文件传递到您的Docker容器中。

首先您需要为Docker提供一个本地存储卷。

  1. 使用首选文本编辑器打开您的docker-compose.yml文件。
  2. 编辑nakama:volumes:条目以指定所需的卷。例如,要在我们上面使用的desktop/nakama目录中创建一个/data文件夹,在Docker容器中的nakama/data上可用,如下所示:
1
2
volumes:
  - ./data:/nakama/data
  1. 保存更改的文件并重新启动您的Docker容器,使更改生效。从您的终端:
1
docker compose restart
  1. 接下来,创建您的自定义配置文件,例如my-config.yml,并将其放在上述Docker可用的/data文件夹中。

my-config.yml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
name: nakama-node-1
data_dir: "./data/"

logger:
    stdout: false
    level: "warn"
    file: "/nakama/data/logfile.log"

console:
    port: 7351
    username: "my_user"
    password: "my_password"
  1. 再次打开您的docker-compose.yml文件,这一次编辑nakama:entrypoint条目以添加指向您的配置文件的--config标志。如下所示:
1
2
3
4
5
6
7
nakama:
    entrypoint:
    - "/bin/sh"
    - "-ecx"
    - >
        /nakama/nakama migrate up --database.address root@cockroachdb:26257 &&
        /nakama/nakama --config /nakama/data/my-config.yml        
  1. 保存更改的文件并重新启动您的Docker容器,使更改生效。从您的终端:
1
docker compose restart

后续步骤 #

现在您的Nakama服务器已经启动并运行了所需的配置,您可以使用首选的客户端SDK开始进行操作。

Related Pages