version: '3.8' # Инфраструктура AVTEX # FastPanel проксирует порты напрямую — nginx контейнер не нужен # Один postgres для всех проектов организации services: # PostgreSQL — общий для всех проектов postgres: image: postgres:16-alpine container_name: postgres restart: always networks: - 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 depends_on: - postgres # XFlow — Mind Map приложение xflow: image: node:20-alpine container_name: xflow restart: always working_dir: /app command: node .output/server/index.mjs networks: - infra ports: - "3002: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 - /opt/xflow/prisma:/app/prisma:ro - /opt/xflow/prisma.config.ts:/app/prisma.config.ts:ro networks: infra: external: true volumes: postgres-data: gitea-data: