main
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
# ZBrain Development Docker Compose
|
||||
#
|
||||
# Только Postgres - всё остальное запускается нативно через bun/node.
|
||||
#
|
||||
# Запуск:
|
||||
# docker compose -f deploy/docker/docker-compose.dev.yml up -d
|
||||
#
|
||||
# Подключение:
|
||||
# psql postgresql://zbrain:dev@localhost:5432/brainhub_dev
|
||||
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
postgres:
|
||||
image: pgvector/pgvector:pg16
|
||||
container_name: zbrain-postgres-dev
|
||||
restart: unless-stopped
|
||||
|
||||
environment:
|
||||
POSTGRES_USER: zbrain
|
||||
POSTGRES_PASSWORD: dev
|
||||
POSTGRES_DB: brainhub_dev
|
||||
|
||||
ports:
|
||||
- "127.0.0.1:5432:5432"
|
||||
|
||||
volumes:
|
||||
- postgres-dev-data:/var/lib/postgresql/data
|
||||
- ./init-dev.sql:/docker-entrypoint-initdb.d/init.sql:ro
|
||||
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U zbrain"]
|
||||
interval: 5s
|
||||
timeout: 3s
|
||||
retries: 5
|
||||
|
||||
# Опционально - adminer для просмотра БД через браузер
|
||||
adminer:
|
||||
image: adminer:latest
|
||||
container_name: zbrain-adminer-dev
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "127.0.0.1:8081:8080"
|
||||
environment:
|
||||
ADMINER_DEFAULT_SERVER: postgres
|
||||
ADMINER_DESIGN: pepa-linha-dark
|
||||
|
||||
volumes:
|
||||
postgres-dev-data:
|
||||
driver: local
|
||||
@@ -0,0 +1,78 @@
|
||||
# ZBrain Production Docker Compose
|
||||
#
|
||||
# Запуск:
|
||||
# docker compose -f deploy/docker/docker-compose.yml up -d
|
||||
#
|
||||
# Postgres работает на хосте (не в контейнере) - так проще делать
|
||||
# нативный pg_dump, тюнинг и обновления без даунтайма всех брейнов.
|
||||
# gbrain instances тоже работают через systemd на хосте.
|
||||
# В контейнерах - только brainhub (api + web) и nginx.
|
||||
|
||||
version: "3.9"
|
||||
|
||||
services:
|
||||
# ============================================================
|
||||
# Brainhub API (Node.js + Express)
|
||||
# ============================================================
|
||||
brainhub-api:
|
||||
build:
|
||||
context: ../..
|
||||
dockerfile: deploy/docker/api.Dockerfile
|
||||
image: zbrain/brainhub-api:latest
|
||||
container_name: zbrain-api
|
||||
restart: unless-stopped
|
||||
|
||||
# Postgres на хосте, поэтому используем host network для api
|
||||
# ИЛИ - оставляем bridge и в DATABASE_URL пишем host.docker.internal
|
||||
network_mode: host
|
||||
|
||||
env_file:
|
||||
- /etc/zbrain/.env
|
||||
|
||||
environment:
|
||||
NODE_ENV: production
|
||||
LOG_FILE: /var/log/zbrain/brainhub.log
|
||||
|
||||
volumes:
|
||||
- /var/log/zbrain:/var/log/zbrain
|
||||
- /etc/zbrain:/etc/zbrain:ro
|
||||
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:3000/health"]
|
||||
interval: 30s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
start_period: 30s
|
||||
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "5"
|
||||
|
||||
# ============================================================
|
||||
# Brainhub Web (статика через nginx внутри контейнера)
|
||||
# ============================================================
|
||||
brainhub-web:
|
||||
build:
|
||||
context: ../..
|
||||
dockerfile: deploy/docker/web.Dockerfile
|
||||
image: zbrain/brainhub-web:latest
|
||||
container_name: zbrain-web
|
||||
restart: unless-stopped
|
||||
|
||||
ports:
|
||||
- "127.0.0.1:8080:80" # только localhost, внешний доступ через системный nginx
|
||||
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "5"
|
||||
|
||||
# ============================================================
|
||||
# Networks
|
||||
# ============================================================
|
||||
# brainhub-api использует host network для прямого доступа к Postgres
|
||||
# и к gbrain instances (localhost:3001-3099).
|
||||
# brainhub-web стоит на bridge с port forward на 127.0.0.1:8080.
|
||||
@@ -0,0 +1,17 @@
|
||||
-- ZBrain Dev Postgres Init
|
||||
-- Создаёт расширения и тестовые БД для локальной разработки
|
||||
|
||||
CREATE EXTENSION IF NOT EXISTS vector;
|
||||
CREATE EXTENSION IF NOT EXISTS pg_trgm;
|
||||
CREATE EXTENSION IF NOT EXISTS pgcrypto;
|
||||
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
||||
|
||||
-- Тестовая БД для gbrain
|
||||
CREATE DATABASE gbrain_dev OWNER zbrain;
|
||||
\c gbrain_dev
|
||||
CREATE EXTENSION IF NOT EXISTS vector;
|
||||
CREATE EXTENSION IF NOT EXISTS pg_trgm;
|
||||
CREATE EXTENSION IF NOT EXISTS pgcrypto;
|
||||
|
||||
\c brainhub_dev
|
||||
-- В brainhub_dev расширения уже созданы выше, миграции прокатятся через приложение
|
||||
Reference in New Issue
Block a user