Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Docker

Tesseras fornece uma imagem Docker para executar o daemon em conteineres. Isso e util para servidores, testar redes com multiplos nos e ambientes de CI.

Construindo a imagem

A partir da raiz do repositorio:

docker build -t tesseras-daemon .

O Dockerfile multi-estagio usa rust:1.85 para compilar e debian:bookworm-slim como base de execucao. A imagem resultante e pequena e contem apenas o binario do daemon e certificados CA.

Executando um unico no

docker run -d \
  --name tesseras \
  -p 4433:4433/udp \
  tesseras-daemon

Isso inicia um no que:

  • Escuta na porta UDP 4433
  • Faz bootstrap a partir dos nos semente padrao
  • Armazena dados dentro do conteiner (efemero)

Para persistir dados entre reinicializacoes do conteiner, monte um volume:

docker run -d \
  --name tesseras \
  -p 4433:4433/udp \
  -v tesseras-data:/root/.local/share/tesseras \
  tesseras-daemon

Executando como no semente

Para executar um no semente que nao faz bootstrap de ninguem:

docker run -d \
  --name tesseras-seed \
  -p 4433:4433/udp \
  tesseras-daemon --listen 0.0.0.0:4433 --bootstrap ""

Rede multi-no com Docker Compose

O repositorio inclui um arquivo Docker Compose para testar uma rede de 3 nos:

services:
  boot1:
    build: ../..
    command: ["--listen", "0.0.0.0:4433", "--bootstrap", ""]
    ports: ["4433:4433/udp"]

  boot2:
    build: ../..
    command: ["--listen", "0.0.0.0:4433", "--bootstrap", "boot1:4433"]
    depends_on: [boot1]

  client:
    build: ../..
    command: ["--listen", "0.0.0.0:4433", "--bootstrap", "boot2:4433"]
    depends_on: [boot2]

Iniciar a rede:

cd tests/smoke
docker compose up --build -d

Verificar que todos os nos estao executando:

docker compose logs --tail=5

Voce devera ver daemon ready nos logs de cada no, e bootstrap successful para boot2 e client.

Parar a rede:

docker compose down

Configuracao personalizada

Para usar um arquivo de configuracao com Docker, monte-o no conteiner:

docker run -d \
  --name tesseras \
  -p 4433:4433/udp \
  -v ./config.toml:/etc/tesseras/config.toml:ro \
  -v tesseras-data:/root/.local/share/tesseras \
  tesseras-daemon --config /etc/tesseras/config.toml

Veja o capitulo Configuracao para todas as opcoes disponiveis.