Sanad_Package_1/docker-compose.p1.yml

39 lines
1.7 KiB
YAML

# Standalone compose for Package 1 (Basic Communication).
# Prereq: build the base image first:
# docker build -f sanad-base/Dockerfile -t sanad-base:latest ..
# Then from Packages/:
# docker compose -f Sanad_Package_1/docker-compose.p1.yml up --build
#
# (The top-level Packages/docker-compose.yml wires this under the `p1` profile.)
services:
p1:
build:
context: .. # = Project/Packages
dockerfile: Sanad_Package_1/Dockerfile
args:
BASE_IMAGE: sanad-base:latest
image: sanad-p1:latest
container_name: sanad-p1
# Host networking is REQUIRED — the G1 DDS link + Gemini cloud + chest audio.
network_mode: host
restart: on-failure
environment:
SANAD_PACKAGE: P1
SANAD_DASHBOARD_PORT: "8011"
SANAD_DASHBOARD_HOST: "0.0.0.0"
SANAD_VOICE_BRAIN: gemini
SANAD_AUDIO_PROFILE: "${SANAD_AUDIO_PROFILE:-builtin}" # builtin (chest) | plugged (USB/Anker)
SANAD_DDS_INTERFACE: "${SANAD_DDS_INTERFACE:-eth0}"
SANAD_LICENSE: /etc/sanad/sanad.lic
SANAD_PUBKEY: /etc/sanad/pubkey.ed25519
SANAD_LICENSE_BIND: "${SANAD_LICENSE_BIND:-0}"
# SANAD_LANGUAGE overrides the license `language` feature if set:
SANAD_LANGUAGE: "${SANAD_LANGUAGE:-}"
devices:
- "/dev/snd:/dev/snd" # USB/plugged audio (Anker) via ALSA/Pulse
volumes:
- "${SANAD_LICENSE_FILE:-./licensing/sanad.lic.example}:/etc/sanad/sanad.lic:ro"
- "../Sanad/data:/app/Sanad/data" # faces/recordings/state persist on host
# Optional chest-audio over DDS — mount the vendored SDK if using 'builtin':
# - "${UNITREE_SDK_DIR:-/home/unitree/unitree_sdk2_python}:/opt/unitree_sdk2_python:ro"