Docker 구성으로 Nakama 설치 #

Docker를 사용하면 Nakama를 가장 빨리 다운로드하고 개발을 시작할 수 있습니다. Docker를 사용하여 다음 작업을 수행할 수 있습니다:

  • 새로운 환경에 설치
  • Nakama에서 CockroachDB 또는 PostgreSQL 데이터베이스 설치 및 실행
  • 기본 운영 체제에 영향을 주지 않는 상태에서 스냅샷을 찍거나 제거하고 Nakama를 재설치합니다.
  • OS와 무관하게 신속하고 간단하게 설치할 수 있습니다.

이 가이드에서 설명한 대로 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 Lab에서는 두 개의 YML 파일을 사용할 수 있습니다. CockroachDB 또는 PostgreSQL을 데이터베이스로 사용합니다.

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
nakama:volumes: 항목을 docker-compose.yml 파일로 /c/Users/<username>/projects/docker:/nakama/data. 와 같이 편집합니다.
  1. Terminal 창을 열고 Nakama 디렉터리로 이동합니다. 예:
1
cd desktop/nakama
  1. 필요한 이미지를 가져와서 애플리케이션을 시작하려면 다음을 실행합니다:
1
docker compose up
  1. 축하합니다! 이제 127.0.0.1:7350에서 Nakama 서버를 실행할 수 있습니다.

Nakama 컨테이너 실행중
Nakama 컨테이너 실행중

Open in Visual Studio Code 버튼(또는 IDE)을 사용하여 docker-compose.yml 파일을 직접 편집합니다.

Nakama Console #

브라우저에서 127.0.0.1:7351로 이동하여 Nakama Console에 액세스할 수 있습니다:

Nakama console
Nakama console

로그인 알림이 표시되면 기본 자격 증명은 admin:password입니다. 구성 파일 또는 명령 라인 플래그를 통해 변경할 수 있습니다.

구성 파일 #

Nakama 서버를 사용자 지정으로 설정하기 위해서 여러 구성 옵션을 사용할 수 있습니다. 설정하려고 하는 모든 구성에 대해서 YML 파일을 생성하고 해당 파일을 Docker 컨테이너로 전달할 수 있습니다.

먼저, Docker에서 사용할 수 있는 로컬 저장 용량을 생성해야 합니다.

  1. 원하는 텍스트 편집기에서 docker-compose.yml 파일을 엽니다.
  2. 원하는 용량을 지정하기 위해서 nakama:volumes: 항목을 편집합니다. 예를 들어, Docker 컨테이너의 nakama/data에서 사용할 수 있는 desktop/nakama 디렉터리에 /data 폴더를 생성하려면 다음 작업을 수행합니다:
1
2
volumes:
  - ./data:/nakama/data
  1. 변경된 파일을 저장하고 Docker 컨테이너를 다시 시작하면 변경사항이 적용됩니다. Terminal에서 다음 작업을 수행합니다:
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 컨테이너를 다시 시작하면 변경사항이 적용됩니다. Terminal에서 다음 작업을 수행합니다:
1
docker compose restart

다음 단계 #

Nakama 서버가 원하는 구성으로 실행중인 경우, 원하는 클라이언트 SDK로 시작할 수 있습니다.

Related Pages