Desplegar con Docker Compose

Monta un clúster de tres nodos con Docker Compose y tokens de alta.

Monta un clúster de tres nodos con Docker Compose. Sirve para entornos de prueba; en producción, cada nodo va en su propia máquina.

Requisitos

  • Docker con Compose.
  • La versión de la imagen, la de Descargas.

Escribe el fichero

Guarda este fichero como compose.yaml en un directorio vacío de la máquina donde vas a arrancar los nodos:

YAML
services:
  node-01:
    image: teseladb/teseladb:<versión>
    command: start --dbpath /data --bind_ip 0.0.0.0 --peer-listen 0.0.0.0:27100 --admin-listen 0.0.0.0:27200
    volumes: ["node-01:/data"]
    ports: ["27017:27017"]
  node-02:
    image: teseladb/teseladb:<versión>
    command: >
      start --dbpath /data --bind_ip 0.0.0.0 --peer-listen 0.0.0.0:27100 --admin-listen 0.0.0.0:27200
      --join node-01:27100 --enroll-token ${TOKEN_02}
    volumes: ["node-02:/data"]
  node-03:
    image: teseladb/teseladb:<versión>
    command: >
      start --dbpath /data --bind_ip 0.0.0.0 --peer-listen 0.0.0.0:27100 --admin-listen 0.0.0.0:27200
      --join node-01:27100 --enroll-token ${TOKEN_03}
    volumes: ["node-03:/data"]
volumes:
  node-01:
  node-02:
  node-03:

Arranca el primer nodo y crea los tokens

Shell
docker compose up -d node-01
export TOKEN_02=$(docker compose exec node-01 teseladb admin --dbpath /data token create --ttl 1h)
export TOKEN_03=$(docker compose exec node-01 teseladb admin --dbpath /data token create --ttl 1h)

Arranca los otros dos

Shell
docker compose up -d node-02 node-03

Comprobar

Cuando los tres contenedores están en marcha, docker compose exec node-01 teseladb admin --dbpath /data nodes lista los tres nodos como activos.

Problemas frecuentes

  • Un nodo no entra porque su token caducó o ya se usó. Crea otro y vuelve a arrancar ese servicio.

Ver también