74 lines
1.5 KiB
YAML
74 lines
1.5 KiB
YAML
version: "3.8"
|
|
|
|
services:
|
|
# Nginx reverse proxy
|
|
nginx:
|
|
image: nginx:alpine
|
|
ports:
|
|
- "80:80"
|
|
volumes:
|
|
- ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf:ro
|
|
depends_on:
|
|
- frontend
|
|
- backend
|
|
- strapi
|
|
networks:
|
|
- aiui-network
|
|
|
|
# Frontend (React + Vite built to static files)
|
|
frontend:
|
|
build:
|
|
context: ./frontend
|
|
dockerfile: Dockerfile
|
|
expose:
|
|
- "80"
|
|
networks:
|
|
- aiui-network
|
|
restart: unless-stopped
|
|
|
|
# Backend (Express + ChromaDB)
|
|
backend:
|
|
build:
|
|
context: ./backend
|
|
dockerfile: Dockerfile
|
|
expose:
|
|
- "3002"
|
|
volumes:
|
|
- ./data/backend:/app/data
|
|
environment:
|
|
- NODE_ENV=production
|
|
- PORT=3002
|
|
- STRAPI_URL=http://strapi:1337
|
|
- STRAPI_API_TOKEN=${STRAPI_API_TOKEN:-}
|
|
networks:
|
|
- aiui-network
|
|
restart: unless-stopped
|
|
|
|
# Strapi CMS (SQLite)
|
|
strapi:
|
|
image: strapi/strapi:5
|
|
expose:
|
|
- "1337"
|
|
volumes:
|
|
- ./data/strapi:/srv/app
|
|
environment:
|
|
- DATABASE_CLIENT=sqlite
|
|
- DATABASE_FILENAME=.tmp/data.db
|
|
- JWT_SECRET=${JWT_SECRET:-changemejwt}
|
|
- ADMIN_JWT_SECRET=${ADMIN_JWT_SECRET:-changemeadmin}
|
|
- APP_KEYS=${APP_KEYS:-changeme1,changeme2}
|
|
- API_TOKEN_SALT=${API_TOKEN_SALT:-changemesalt}
|
|
- TRANSFER_TOKEN_SALT=${TRANSFER_TOKEN_SALT:-changemetoken}
|
|
- NODE_ENV=production
|
|
networks:
|
|
- aiui-network
|
|
restart: unless-stopped
|
|
|
|
networks:
|
|
aiui-network:
|
|
driver: bridge
|
|
|
|
volumes:
|
|
backend-data:
|
|
strapi-data:
|