ai-voicebot/docker-compose.yml
2025-09-08 16:03:53 -07:00

93 lines
2.1 KiB
YAML

services:
client:
container_name: client
hostname: client
build:
context: .
dockerfile: Dockerfile.client
env_file:
- ./.env
environment:
- PRODUCTION=${PRODUCTION:-false}
ports:
- "3456:3000"
restart: no
volumes:
- ./tests:/tests:ro
- ./server:/server:ro # So the frontend can read the OpenAPI spec
- ./client:/client:rw
- ./dev-keys:/keys:ro # So the frontend entrypoint can check for SSL files
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
networks:
- ai-voicebot-net
python-3.12:
container_name: python-3.12
hostname: python-3.12
build:
context: .
dockerfile: Dockerfile.python-3.12
restart: no
volumes:
- ./build:/build:rw
server:
container_name: server
hostname: server
build:
context: .
dockerfile: Dockerfile.server
env_file:
- ./.env
environment:
- PRODUCTION=${PRODUCTION:-false}
- PYTHONPATH=/:/server
restart: always
ports:
- "8001:8000"
volumes:
- ./tests:/tests:ro
- ./shared:/shared:ro
- ./server:/server:rw
- ./server/.venv:/server/.venv:rw
- ./client/build:/client/build:ro
- ./dev-keys:/keys:ro
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
networks:
- ai-voicebot-net
voicebot:
container_name: voicebot
hostname: voicebot
build:
context: .
dockerfile: Dockerfile.voicebot
env_file:
- ./.env
environment:
- PRODUCTION=${PRODUCTION:-false}
- VOICEBOT_MODE=provider
restart: unless-stopped
devices:
- /dev/dri:/dev/dri # For hardware video encoding/decoding (if supported)
volumes:
- ./tests:/tests:ro
- ./cache:/root/.cache:rw
- ./shared:/shared:ro
- ./voicebot:/voicebot:rw
- ./voicebot/.venv:/voicebot/.venv:rw
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
# network_mode: host
networks:
- ai-voicebot-net
networks:
ai-voicebot-net:
driver: bridge