217 lines
6.2 KiB
YAML
217 lines
6.2 KiB
YAML
# Nanaxe Server + Consyscab Integration
|
|
# Объединённая конфигурация для совместного развёртывания
|
|
|
|
services:
|
|
# ==========================================
|
|
# 1. Единая база данных PostgreSQL
|
|
# ==========================================
|
|
consyscab_db:
|
|
image: postgres:16-alpine
|
|
container_name: consyscab_db
|
|
environment:
|
|
- POSTGRES_USER=user
|
|
- POSTGRES_PASSWORD=${DB_PASSWORD:-password}
|
|
- POSTGRES_DB=symfony_db
|
|
volumes:
|
|
- pg_data:/var/lib/postgresql/data
|
|
- ./docker/postgres/init-db.sh:/docker-entrypoint-initdb.d/init-db.sh:ro
|
|
# Nanaxe: инициализация базы Gitea
|
|
- ./nanaxe/postgres-init:/docker-entrypoint-initdb.d/nanaxe:ro
|
|
networks:
|
|
- consyscab-network
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U user"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
# ==========================================
|
|
# 2. PHP 8.4 (Symfony + Moodle)
|
|
# ==========================================
|
|
consyscab_php:
|
|
build:
|
|
context: ./docker/php
|
|
container_name: consyscab_php
|
|
volumes:
|
|
- ./backend:/var/www/symfony
|
|
- ./moodle:/var/www/moodle
|
|
- ./moodledata:/var/www/moodledata
|
|
- ./docker/php/custom.ini:/usr/local/etc/php/conf.d/custom.ini:ro
|
|
- ~/.gitconfig:/var/www/.gitconfig:ro
|
|
depends_on:
|
|
consyscab_db:
|
|
condition: service_healthy
|
|
consyscab_memcached:
|
|
condition: service_started
|
|
networks:
|
|
- consyscab-network
|
|
|
|
# ==========================================
|
|
# 3. Nginx (Consyscab + Nanaxe)
|
|
# ==========================================
|
|
consyscab_nginx:
|
|
image: nginx:alpine
|
|
container_name: consyscab_nginx
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
volumes:
|
|
- ./backend:/var/www/symfony
|
|
- ./moodle:/var/www/moodle
|
|
- ./docker/nginx/conf.d:/etc/nginx/conf.d
|
|
# Nanaxe: дополнительная конфигурация
|
|
- ./nanaxe/nginx:/etc/nginx/conf.d/nanaxe:ro
|
|
- ./nanaxe/html:/usr/share/nginx/html/nanaxe:ro
|
|
depends_on:
|
|
- consyscab_php
|
|
- nanaxe_gitea
|
|
- nanaxe_api
|
|
networks:
|
|
- consyscab-network
|
|
|
|
# ==========================================
|
|
# 4. Adminer
|
|
# ==========================================
|
|
consyscab_adminer:
|
|
image: adminer
|
|
container_name: consyscab_adminer
|
|
depends_on:
|
|
- consyscab_db
|
|
networks:
|
|
- consyscab-network
|
|
|
|
# ==========================================
|
|
# 5. Memcached
|
|
# ==========================================
|
|
consyscab_memcached:
|
|
image: memcached:alpine
|
|
container_name: consyscab_memcached
|
|
networks:
|
|
- consyscab-network
|
|
|
|
# ==========================================
|
|
# 6. Node.js для Quasar
|
|
# ==========================================
|
|
consyscab_front:
|
|
image: node:22-alpine
|
|
container_name: consyscab_front
|
|
user: "1000:1000"
|
|
ports:
|
|
- "9000:9000"
|
|
- "9005:9005"
|
|
working_dir: /app
|
|
volumes:
|
|
- ./frontend:/app
|
|
- ~/.gitconfig:/var/www/.gitconfig:ro
|
|
environment:
|
|
- NODE_ENV=development
|
|
tty: true
|
|
stdin_open: true
|
|
networks:
|
|
- consyscab-network
|
|
|
|
# ==========================================
|
|
# 7. Mercure Hub
|
|
# ==========================================
|
|
consyscab_mercure:
|
|
image: dunglas/mercure
|
|
container_name: consyscab_mercure
|
|
environment:
|
|
MERCURE_PUBLISHER_JWT_KEY: ${MERCURE_JWT_SECRET:-secret}
|
|
MERCURE_SUBSCRIBER_JWT_KEY: ${MERCURE_JWT_SECRET:-secret}
|
|
ALLOW_ANONYMOUS: 1
|
|
networks:
|
|
- consyscab-network
|
|
|
|
# ==========================================
|
|
# 8. Nanaxe Gitea (Git сервер)
|
|
# ==========================================
|
|
nanaxe_gitea:
|
|
image: gitea/gitea:latest
|
|
container_name: nanaxe_gitea
|
|
environment:
|
|
- USER_UID=1000
|
|
- USER_GID=1000
|
|
- GITEA__database__DB_TYPE=postgres
|
|
- GITEA__database__HOST=consyscab_db:5432
|
|
- GITEA__database__NAME=gitea
|
|
- GITEA__database__USER=user
|
|
- GITEA__database__PASSWD=${DB_PASSWORD:-password}
|
|
- GITEA__server__DOMAIN=${GITEA_DOMAIN:-git.localhost}
|
|
- GITEA__server__ROOT_URL=http://${GITEA_DOMAIN:-git.localhost}
|
|
- GITEA__server__SSH_DOMAIN=${GITEA_DOMAIN:-git.localhost}
|
|
- GITEA__server__SSH_PORT=2221
|
|
- GITEA__server__SSH_LISTEN_PORT=22
|
|
- GITEA__security__INSTALL_LOCK=true
|
|
- GITEA__security__SECRET_KEY=${GITEA_SECRET_KEY}
|
|
- GITEA__service__DISABLE_REGISTRATION=false
|
|
- GITEA__service__REQUIRE_SIGNIN_VIEW=false
|
|
volumes:
|
|
- gitea_data:/data
|
|
- /etc/timezone:/etc/timezone:ro
|
|
- /etc/localtime:/etc/localtime:ro
|
|
depends_on:
|
|
consyscab_db:
|
|
condition: service_healthy
|
|
networks:
|
|
- consyscab-network
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:3000/api/healthz"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 40s
|
|
|
|
# ==========================================
|
|
# 9. Nanaxe API Server
|
|
# ==========================================
|
|
nanaxe_api:
|
|
build:
|
|
context: ./nanaxe/api
|
|
dockerfile: Dockerfile
|
|
container_name: nanaxe_api
|
|
environment:
|
|
- NODE_ENV=production
|
|
- PORT=8080
|
|
- GITEA_URL=http://nanaxe_gitea:3000
|
|
- GITEA_TOKEN=${GITEA_TOKEN}
|
|
- JWT_SECRET=${NANAXE_JWT_SECRET}
|
|
- MINDMAP_STORAGE_PATH=/app/mindmaps
|
|
volumes:
|
|
- mindmap_data:/app/mindmaps
|
|
- ./nanaxe/logs:/app/logs
|
|
depends_on:
|
|
- nanaxe_gitea
|
|
- consyscab_db
|
|
networks:
|
|
- consyscab-network
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:8080/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
|
|
# ==========================================
|
|
# 10. Nanaxe WebDAV (опционально)
|
|
# ==========================================
|
|
nanaxe_webdav:
|
|
image: bytemark/webdav
|
|
container_name: nanaxe_webdav
|
|
environment:
|
|
- AUTH_TYPE=Basic
|
|
- USERNAME=${WEBDAV_USER:-admin}
|
|
- PASSWORD=${WEBDAV_PASSWORD}
|
|
volumes:
|
|
- mindmap_data:/var/lib/dav
|
|
networks:
|
|
- consyscab-network
|
|
|
|
networks:
|
|
consyscab-network:
|
|
driver: bridge
|
|
|
|
volumes:
|
|
pg_data:
|
|
gitea_data:
|
|
mindmap_data:
|