Menggunakan Docker Run

Pertama kita coba deploy NATS dengan docker run

  1. docker pull nats:latest

  2. docker run -p 4222:4222 -ti nats:latest


Deploy dengan docker-compose

Deploy dengan docker-compose.yml

  1. Buat docker-compose.yml file
version: "3.3"

services:

  nats:
    container_name: nats
    image: nats:latest
    restart: unless-stopped
    ports:
      - "4222:4222"
    networks:
      - nats-public

networks:
  nats-public:
  1. Jalankan dengan docker-compose up -d

Custom Config dan Aktivasi Metrics NATS

Ada kasus tertentu yang bikin kita butuh size message payload yang besar di NATS . Berikut cara menggunakan custom config nats di file docker-compose,

  1. Buat satu file beri nama nats-server.conf
#just example only
#nats recommended < 3Mb
max_payload: 4Mb

# Client port of 4222 on all interfaces
port: 4222

# HTTP monitoring port
monitor_port: 8222

authorization {
  user: username
  password: password
  timeout: 2
}
  1. Buat/modifikasi docker-compose.yml
version: "3.3"

services:

  nats:
    container_name: nats
    image: nats:latest
    restart: unless-stopped

    volumes:
      - $PWD/nats-server.conf:/nats-server.conf
    #or you can use one liner command
    command: "-p 4222 -m 8222 --user username --pass password -c /nats-server.conf"

    ports:
      - "4222:4222"
      #metric port for nats exporters
      - "8222:8222"

    #activate metric port
    command: "-m 8222"
    networks:
      - nats-public

  nats_exporter:
    image: natsio/prometheus-nats-exporter:latest
    restart: unless-stopped
    depends_on:
      - nats
    container_name: nats_exporter
    ports:
      - "7777:7777"
    command: "-varz http://nats:8222"
    networks:
      - nats-public

networks:
  nats-public:
Metrics NATS

Metrics NATS


Docker NATS Cluster dalam 1 Server

NATS bisa di buat cluster dalam 1 server, dokumentasi mereka cukup bagus dan mudah di mengerti.

Contoh docker-compose ini saya ambil di bmcustodio - docker-compose nats cluster

version: "3.7"

services:
  nats-1:
    command:
      - "--debug"
      - "--cluster"
      - "nats://0.0.0.0:6222"
      - "--port"
      - "4222"
      - "-m"
      - "8222"
    image: "nats:latest"
    networks:
      - main
    ports:
      - "14222:4222"
      - "18222:8222"
      - "16222:6222"
    volumes:
      - $PWD/nats-server.conf:/nats-server.conf

  nats-2:
    command:
      - "--debug"
      - "--cluster"
      - "nats://0.0.0.0:6222"
      - "--port"
      - "4222"
      - "--routes"
      - "nats://nats-1:6222"
    image: "nats:latest"
    networks:
      - main
    ports:
      - "24222:4222"
      - "28222:8222"
    volumes:
      - $PWD/nats-server.conf:/nats-server.conf

  nats-3:
    command:
      - "--debug"
      - "--cluster"
      - "nats://0.0.0.0:6222"
      - "--port"
      - "4222"
      - "--routes"
      - "nats://nats-1:6222"
    image: "nats:latest"
    networks:
      - main
    ports:
      - "34222:4222"
      - "38222:8222"
    volumes:
      - $PWD/nats-server.conf:/nats-server.conf

  nats_exporter:
    image: natsio/prometheus-nats-exporter:latest
    restart: unless-stopped
    depends_on:
      - nats-1
    container_name: nats_exporter
    ports:
      - "7777:7777"
    command: "-varz http://nats-1:8222"

networks:
  main:
    driver: bridge
    ipam:
      config:
        - subnet: 172.25.255.0/24
      driver: default
  1. Berdasarkan dokumentasi NATS , untuk koneksi ke NATS anda bisa menggunakan client port 14222 dan cluster port 16222 (sesuai docker-compose di atas)

Jika kamu merasa tulisan ini bermanfaat & membantu kamu, kamu bisa berdonasi lewat saweria

If you feel this website help you, you can donate at saweria