Files
colanode/hosting/docker/docker-compose.yaml
2026-01-10 22:58:16 +01:00

133 lines
4.1 KiB
YAML

version: '3.8'
services:
postgres:
image: pgvector/pgvector:pg17
container_name: colanode_postgres
restart: always
environment:
POSTGRES_USER: colanode_user
POSTGRES_PASSWORD: postgrespass123
POSTGRES_DB: colanode_db
volumes:
- postgres_data:/var/lib/postgresql/data
ports:
- '5432:5432'
networks:
- colanode_network
valkey:
image: valkey/valkey:8.1
container_name: colanode_valkey
restart: always
command: ['valkey-server', '--requirepass', 'your_valkey_password']
volumes:
- valkey_data:/data
ports:
- '6379:6379'
networks:
- colanode_network
# ---------------------------------------------------------------
# Optional MinIO Object Storage (Enable when using S3 storage)
# ---------------------------------------------------------------
minio:
profiles:
- s3
image: minio/minio:RELEASE.2025-04-08T15-41-24Z
container_name: colanode_minio
restart: always
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: your_minio_password
MINIO_BROWSER: 'on'
MINIO_DOMAIN: minio
MINIO_ADDRESS: ':9000'
MINIO_CONSOLE_ADDRESS: ':9001'
volumes:
- minio_data:/data
ports:
- '9000:9000'
- '9001:9001'
entrypoint: sh
command: -c 'mkdir -p /data/colanode && minio server /data --address ":9000" --console-address ":9001"'
networks:
- colanode_network
# ---------------------------------------------------------------
# Optional SMTP Server (Mailpit) for Local Email Testing
# ---------------------------------------------------------------
# This service runs Mailpit, a local SMTP testing tool.
# If you want to test how emails are sent in the 'server' service,
# uncomment the 'smtp' service block, set email.enabled=true in config.json,
# point the email provider to "smtp", and define EMAIL_HOST /
# EMAIL_SMTP_USER / EMAIL_SMTP_PASSWORD env vars (and any others) so the
# SMTP provider block in config.json resolves via env:// pointers.
#
# Access the Mailpit UI at http://localhost:8025
# ---------------------------------------------------------------
# smtp:
# image: axllent/mailpit:v1.24.1
# container_name: colanode_smtp
# restart: always
# ports:
# - '1025:1025' # SMTP IN (Connect server service to this port)
# - '8025:8025' # Web UI
# networks:
# - colanode_network
server:
image: ghcr.io/colanode/server:latest
container_name: colanode_server
restart: always
depends_on:
- postgres
- valkey
# - smtp # Optional
environment:
# ------------------------------------------------------------------
# Configuration Strategy
# ------------------------------------------------------------------
# - All defaults live in config.json mounted at /app/apps/server/config.json
# - config.json references secrets via env://VAR or read values from files via file://path
# - The variables below are only those secrets; every other setting
# must be changed inside the JSON file
# ------------------------------------------------------------------
NODE_ENV: production
# Required env:// secrets (default configuration references these as env://VAR)
POSTGRES_URL: postgres://colanode_user:postgrespass123@postgres:5432/colanode_db
REDIS_URL: redis://:your_valkey_password@valkey:6379/0
# If you want to override the default configuration mount a config.json as explained below
# and add the config.json path as an environment variable:
# CONFIG: /config.json
ports:
- '3000:3000'
volumes:
- server_storage:/var/lib/colanode/storage
# Mount a config.json sitting next to this compose file to override defaults.
# - ./config.json:/config.json:ro
networks:
- colanode_network
web:
image: ghcr.io/colanode/web:latest
container_name: colanode_web
restart: always
ports:
- '4000:80'
networks:
- colanode_network
volumes:
postgres_data:
valkey_data:
minio_data:
server_storage:
networks:
colanode_network:
driver: bridge