diff --git a/registry/docker-compose.yml b/registry/docker-compose.yml new file mode 100644 index 0000000..89ab029 --- /dev/null +++ b/registry/docker-compose.yml @@ -0,0 +1,225 @@ +version: '3.7' + +services: + + # api + + api: + image: ghcr.io/vida-nyu/ptg-api-server:main + container_name: api + ports: + - 7890:8000 + volumes: + - ${VOLUMES:-./data}/recordings:/data/recordings + environment: + REDIS_URL: redis://redis:6379 + MONGO_URL: mongodb://mongo:27017 + depends_on: + - redis + - mongo + restart: unless-stopped + labels: + - "traefik.enable=true" + - "traefik.http.routers.api.rule=Host(`api.${DOMAIN:-localhost}`)" + - "traefik.http.services.api.loadbalancer.server.port=8000" + + # communication + + redis: + image: redis + container_name: redis + restart: unless-stopped + ports: + - 6379:6379 + volumes: + - ${VOLUMES:-./data}/redis-data:/data + environment: + ALLOW_EMPTY_PASSWORD: 'yes' + healthcheck: + test: ["CMD-SHELL", "redis-cli ping | grep PONG"] + + # storage + + mongo: + image: mongo:latest + container_name: mongo + restart: unless-stopped + environment: + MONGO_INITDB_ROOT_USERNAME: ${ADMIN_USER:-admin} + MONGO_INITDB_ROOT_PASSWORD: ${ADMIN_PASS:-admin} + volumes: + - ${VOLUMES:-./data}/mongo:/data/db + # - ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js + ports: + - 27017:27017 + + mongo-express: + image: mongo-express + container_name: mongo_express + restart: unless-stopped + ports: + - 8034:8081 + environment: + # ME_CONFIG_MONGODB_URL: mongodb://mongo:27017/ + ME_CONFIG_MONGODB_SERVER: mongo + ME_CONFIG_MONGODB_ADMINUSERNAME: ${ADMIN_USER:-admin} + ME_CONFIG_MONGODB_ADMINPASSWORD: ${ADMIN_PASS:-admin} + ME_CONFIG_BASICAUTH_USERNAME: ${ADMIN_USER:-admin} + ME_CONFIG_BASICAUTH_PASSWORD: ${ADMIN_PASS:-admin} + labels: + - "traefik.enable=true" + - "traefik.http.routers.mongo.rule=Host(`mongoex.${DOMAIN:-localhost}`)" + - "traefik.http.routers.mongo.entrypoints=web" + - "traefik.http.services.mongo.loadbalancer.server.port=8081" + + # visualization + + dash: + image: ghcr.io/vida-nyu/tim-dashboard:demo-november-2023-apiurl + container_name: dash + restart: unless-stopped + ports: + - "3010:80" + labels: + - "traefik.enable=true" + - "traefik.http.routers.tim-dash.rule=Host(`online.${DOMAIN:-localhost}`)" + - "traefik.http.routers.tim-dash.entrypoints=web" + - "traefik.http.services.tim-dash.loadbalancer.server.port=80" + + # argus: + # image: ghcr.io/vida-nyu/argus2:main + # container_name: argus + # restart: unless-stopped + # ports: + # - "3000:80" + # labels: + # - "traefik.enable=true" + # - "traefik.http.routers.tim-dash.rule=Host(`argus.${DOMAIN:-localhost}`)" + # - "traefik.http.routers.tim-dash.entrypoints=web" + # - "traefik.http.services.tim-dash.loadbalancer.server.port=80" + + # # perception & reasoning + + # perception: + # image: ghcr.io/vida-nyu/ptg-server-ml-perception:main + # container_name: perception + # restart: unless-stopped + # volumes: + # - /dev/shm:/dev/shm + # - ${VOLUMES:-./data}/models:/src/app/models + # - ${VOLUMES:-./data}/models/cache:/root/.cache + # - ${VOLUMES:-./data}/models/torch_iocache:/root/.torch/iopath_cache + # environment: + # PYTHONUNBUFFERED: "1" + # # devices: + # # - /dev/nvidia1:/dev/nvidia0 + # # - /dev/nvidia0:/dev/nvidia1 + # # deploy: + # # resources: + # # reservations: + # # devices: + # # - driver: nvidia + # # count: 2 + # # capabilities: [gpu] + + # reasoning: + # image: ghcr.io/vida-nyu/ptg-server-ml-reasoning:main + # container_name: reasoning + # restart: unless-stopped + # volumes: + # - ${VOLUMES:-./data}/models/reasoning:/src/app/models + # - ${VOLUMES:-./data}/models/reasoning/nltk:/usr/share/nltk_data + # - ${VOLUMES:-./data}/models/reasoning/spacy:/opt/conda/lib/python3.8/site-packages/en_core_web_lg + # # devices: + # # - /dev/nvidia0:/dev/nvidia0 + # # deploy: + # # resources: + # # reservations: + # # devices: + # # - driver: nvidia + # # count: 1 + # # capabilities: [gpu] + + # memory: + # image: ghcr.io/vida-nyu/ptg-server-ml-3d-memory:main + # container_name: memory + # restart: unless-stopped + + # 3d-memory-sync: + # image: ghcr.io/vida-nyu/ptg-server-ml-3d-memory:main + # container_name: 3d-memory-sync + # command: main.py sync run + # restart: unless-stopped + + # recorders + + raw_recorder: + image: ghcr.io/vida-nyu/ptg-server-ml-record:main + container_name: raw_recorder + restart: unless-stopped + # command: python -m ptgprocess.processors.record raw run --continuous + command: sleep 100000 + volumes: + - ${VOLUMES:-./data}/recordings/raw:/src/app/recordings + + video_recorder: + image: ghcr.io/vida-nyu/ptg-server-ml-record:main + container_name: video_recorder + restart: unless-stopped + command: python -m ptgprocess.processors.record video run --continuous + volumes: + - ${VOLUMES:-./data}/recordings/post:/src/app/recordings + - ${VOLUMES:-./data}/recordings/raw:/src/app/raw + + audio_recorder: + image: ghcr.io/vida-nyu/ptg-server-ml-record:main + container_name: audio_recorder + restart: unless-stopped + command: python -m ptgprocess.processors.record audio run --continuous + volumes: + - ${VOLUMES:-./data}/recordings/post:/src/app/recordings + - ${VOLUMES:-./data}/recordings/raw:/src/app/raw + + json_recorder: + image: ghcr.io/vida-nyu/ptg-server-ml-record:main + container_name: json_recorder + restart: unless-stopped + command: python -m ptgprocess.processors.record json run --continuous + volumes: + - ${VOLUMES:-./data}/recordings/post:/src/app/recordings + - ${VOLUMES:-./data}/recordings/raw:/src/app/raw + + pointcloud_recorder: + image: ghcr.io/vida-nyu/ptg-server-ml-record:main + container_name: pointcloud_recorder + restart: unless-stopped + command: python -m ptgprocess.processors.record pointcloud run --continuous + volumes: + - ${VOLUMES:-./data}/recordings/post:/src/app/recordings + - ${VOLUMES:-./data}/recordings/raw:/src/app/raw + + + + + # traefik: + # container_name: ptg-traefik + # image: traefik:v2.7 #traefik:latest + # restart: unless-stopped + # ports: + # - "80:80" + # - "443:443" + # command: + # - "--ping" + # - "--api.insecure=true" + # - "--api.dashboard=true" + # - "--log.level=debug" + # - "--providers.docker=true" + # - "--providers.docker.exposedbydefault=true" + # - "--providers.docker.network=floodnet_application_default" + # - "--entrypoints.web.address=:80" + # volumes: + # # - ./config:/etc/traefik + # # - ./.acme.json:/acme.json + # - /var/run/docker.sock:/var/run/docker.sock:ro + # healthcheck: + # test: traefik healthcheck --ping