feat: prisma schema, groups API, deploy workflow

This commit is contained in:
2026-04-23 21:41:11 +05:00
parent 4c50036172
commit 65cf8ca01f
285 changed files with 24602 additions and 25890 deletions
+72 -96
View File
@@ -1,121 +1,97 @@
version: '3.8'
# Nanaxe Server - Mindmap Synchronization
# Run alongside other Docker projects by changing ports
# Инфраструктура AVTEX
# FastPanel проксирует порты напрямую — nginx контейнер не нужен
# Один postgres для всех проектов организации
services:
# Gitea - Self-hosted Git server для хранения markdown-файлов
gitea:
image: gitea/gitea:latest
container_name: nanaxe-gitea
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=postgres:5432
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=gitea_password
- GITEA__server__DOMAIN=git.a-crm.controlsystem.kz
- GITEA__server__ROOT_URL=http://git.a-crm.controlsystem.kz/
- GITEA__server__SSH_DOMAIN=git.a-crm.controlsystem.kz
- GITEA__server__SSH_PORT=2221
- GITEA__server__SSH_LISTEN_PORT=22
- GITEA__security__INSTALL_LOCK=true
- GITEA__service__DISABLE_REGISTRATION=false
- GITEA__service__REQUIRE_SIGNIN_VIEW=false
# PostgreSQL — общий для всех проектов
postgres:
image: postgres:16-alpine
container_name: postgres
restart: always
networks:
- nanaxe-network
- infra-network
ports:
- "5432:5432"
environment:
POSTGRES_USER: ${POSTGRES_USER:-admin}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: postgres
volumes:
- postgres-data:/var/lib/postgresql/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
# Gitea — Git сервер организации AVTEX
gitea:
image: gitea/gitea:latest
container_name: gitea
restart: always
networks:
- infra-network
ports:
- "3001:3000"
- "2221:22"
environment:
USER_UID: 1000
USER_GID: 1000
GITEA__database__DB_TYPE: postgres
GITEA__database__HOST: postgres:5432
GITEA__database__NAME: gitea
GITEA__database__USER: gitea
GITEA__database__PASSWD: ${GITEA_DB_PASSWORD:-gitea_password}
GITEA__server__DOMAIN: git.a-crm.controlsystem.kz
GITEA__server__ROOT_URL: http://git.a-crm.controlsystem.kz/
GITEA__server__SSH_DOMAIN: git.a-crm.controlsystem.kz
GITEA__server__SSH_PORT: 2221
GITEA__server__SSH_LISTEN_PORT: 22
GITEA__security__INSTALL_LOCK: "true"
GITEA__service__DISABLE_REGISTRATION: "false"
volumes:
- gitea-data:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3001:3000" # Changed from 3000 to avoid conflicts
- "2221:22" # Changed from 222 to avoid conflicts
depends_on:
- postgres
# PostgreSQL для Gitea
postgres:
image: postgres:16-alpine
container_name: nanaxe-postgres
ports:
- "5433:5432" # Expose on different port
environment:
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=gitea_password
- POSTGRES_DB=gitea
# XFlow — Mind Map приложение
xflow:
image: node:20-alpine
container_name: xflow
restart: always
working_dir: /app
command: node .output/server/index.mjs
networks:
- nanaxe-network
volumes:
- postgres-data:/var/lib/postgresql/data
# Nanaxe API Server - для синхронизации mindmaps
nanaxe-api:
build:
context: ./api
dockerfile: Dockerfile
container_name: nanaxe-api
environment:
- NODE_ENV=production
- PORT=8080
- GITEA_URL=http://gitea:3000
- GITEA_TOKEN=${GITEA_TOKEN}
- JWT_SECRET=${JWT_SECRET:-your-super-secret-jwt-key-change-in-production}
- MINDMAP_STORAGE_PATH=/app/mindmaps
restart: always
networks:
- nanaxe-network
volumes:
- mindmap-data:/app/mindmaps
- ./api/logs:/app/logs
- infra-network
ports:
- "8082:8080" # Changed from 8080 to avoid conflicts
- "3000:3000"
environment:
NODE_ENV: production
PORT: 3000
NUXT_JWT_SECRET: ${NUXT_JWT_SECRET}
GITEA_URL: http://gitea:3000
GITEA_TOKEN: ${GITEA_TOKEN}
GITEA_ORG: ${GITEA_ORG:-AVTEX}
GITEA_MINDMAP_REPO: ${GITEA_MINDMAP_REPO:-MMAVTEX}
GITEA_PROJECT_REPO: ${GITEA_PROJECT_REPO:-XFlow}
DATABASE_URL: postgresql://xflow:${XFLOW_DB_PASSWORD:-xflow_pass}@postgres:5432/xflow
NUXT_PUBLIC_FIREBASE_API_KEY: ${NUXT_PUBLIC_FIREBASE_API_KEY}
NUXT_PUBLIC_FIREBASE_AUTH_DOMAIN: ${NUXT_PUBLIC_FIREBASE_AUTH_DOMAIN}
NUXT_PUBLIC_FIREBASE_PROJECT_ID: ${NUXT_PUBLIC_FIREBASE_PROJECT_ID}
NUXT_PUBLIC_FIREBASE_APP_ID: ${NUXT_PUBLIC_FIREBASE_APP_ID}
NUXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID: ${NUXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID}
volumes:
- /opt/xflow/.output:/app/.output:ro
depends_on:
- gitea
- postgres
# Nginx - Reverse Proxy и статические файлы
nginx:
image: nginx:alpine
container_name: nanaxe-nginx
restart: always
networks:
- nanaxe-network
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- ./nginx/html:/usr/share/nginx/html:ro
ports:
- "8083:80" # Changed from 80 to avoid conflicts
- "8444:443" # Changed from 443 to avoid conflicts
depends_on:
- gitea
- nanaxe-api
# (Опционально) WebDAV сервер для прямого доступа к файлам
webdav:
image: bytemark/webdav
container_name: nanaxe-webdav
restart: always
networks:
- nanaxe-network
volumes:
- mindmap-data:/var/lib/dav
environment:
- AUTH_TYPE=Basic
- USERNAME=${WEBDAV_USER:-admin}
- PASSWORD=${WEBDAV_PASSWORD:-admin}
ports:
- "8084:80" # Changed from 8081 to avoid conflicts
networks:
nanaxe-network:
infra-network:
driver: bridge
volumes:
gitea-data:
postgres-data:
mindmap-data:
gitea-data: