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.