diff --git a/.github/workflows/check-compose-sync.yml b/.github/workflows/check-compose-sync.yml index 5a343ec..78a51b6 100644 --- a/.github/workflows/check-compose-sync.yml +++ b/.github/workflows/check-compose-sync.yml @@ -2,6 +2,8 @@ name: Check Compose Files Sync on: push: + branches: + - main paths: - 'on-prem/templates/**' - 'on-prem/scripts/generate-compose.sh' diff --git a/.github/workflows/validate-compose.yml b/.github/workflows/validate-compose.yml new file mode 100644 index 0000000..c5e7778 --- /dev/null +++ b/.github/workflows/validate-compose.yml @@ -0,0 +1,117 @@ +name: Validate Docker Compose Files + +on: + push: + branches: + - main + paths: + - 'on-prem/docker-compose.full.yml' + - 'on-prem/docker-compose.database.yml' + - 'on-prem/docker-compose.cache.yml' + pull_request: + paths: + - 'on-prem/docker-compose.full.yml' + - 'on-prem/docker-compose.database.yml' + - 'on-prem/docker-compose.cache.yml' + +jobs: + validate-docker: + name: Validate with Docker (Ubuntu) + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Print versions + run: | + docker --version + docker compose version + + - name: Create minimal .env for validation + working-directory: on-prem + run: | + cat > .env << 'EOF' + # Minimal env file for docker compose config validation + CLICKHOUSE_CURRENTS_PASSWORD=placeholder + TRAEFIK_DOMAIN=example.com + EOF + + - name: Validate docker-compose.full.yml + working-directory: on-prem + run: | + echo "Validating docker-compose.full.yml..." + docker compose -f docker-compose.full.yml config --quiet + echo "✅ docker-compose.full.yml is valid" + + - name: Validate docker-compose.database.yml + working-directory: on-prem + run: | + echo "Validating docker-compose.database.yml..." + docker compose -f docker-compose.database.yml config --quiet + echo "✅ docker-compose.database.yml is valid" + + - name: Validate docker-compose.cache.yml + working-directory: on-prem + run: | + echo "Validating docker-compose.cache.yml..." + docker compose -f docker-compose.cache.yml config --quiet + echo "✅ docker-compose.cache.yml is valid" + + validate-podman: + name: Validate with Podman (AlmaLinux 8) + runs-on: ubuntu-latest + container: + image: almalinux:8 + options: --privileged + steps: + - name: Install dependencies + run: | + dnf install -y podman git curl + # Download pre-built docker-compose binary (avoids pip compilation issues) + curl -L "https://github.com/docker/compose/releases/download/v2.32.4/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose + chmod +x /usr/local/bin/docker-compose + + - name: Checkout + uses: actions/checkout@v4 + + - name: Print versions + run: | + podman --version + docker-compose --version + + - name: Create minimal .env for validation + working-directory: on-prem + run: | + cat > .env << 'EOF' + # Minimal env file for podman compose config validation + CLICKHOUSE_CURRENTS_PASSWORD=placeholder + TRAEFIK_DOMAIN=example.com + EOF + + - name: Validate docker-compose.full.yml + working-directory: on-prem + run: | + echo "Validating docker-compose.full.yml with podman compose..." + # Start Podman socket and run compose with DOCKER_HOST pointing to it + podman system service --time=0 unix:///tmp/podman.sock & + sleep 1 + DOCKER_HOST=unix:///tmp/podman.sock podman compose -f docker-compose.full.yml config --quiet + echo "✅ docker-compose.full.yml is valid" + + - name: Validate docker-compose.database.yml + working-directory: on-prem + run: | + echo "Validating docker-compose.database.yml with podman compose..." + podman system service --time=0 unix:///tmp/podman.sock & + sleep 1 + DOCKER_HOST=unix:///tmp/podman.sock podman compose -f docker-compose.database.yml config --quiet + echo "✅ docker-compose.database.yml is valid" + + - name: Validate docker-compose.cache.yml + working-directory: on-prem + run: | + echo "Validating docker-compose.cache.yml with podman compose..." + podman system service --time=0 unix:///tmp/podman.sock & + sleep 1 + DOCKER_HOST=unix:///tmp/podman.sock podman compose -f docker-compose.cache.yml config --quiet + echo "✅ docker-compose.cache.yml is valid" diff --git a/AGENTS.md b/AGENTS.md index afa849b..5ebe4cb 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -26,6 +26,16 @@ image: ${DC_MONGODB_IMAGE:-mongo:8.2.3} ``` +### Environment Variables + +- **Use key-value format** instead of array format for `environment:` sections - makes files more extensible and easier to merge: + ```yaml + environment: + KEY: value + ANOTHER_KEY: ${VAR} + ``` + Not: `environment: - KEY=value` (array format) + ### Initialization - Use `command` instead of `entrypoint` when you want to keep the default Docker entrypoint behavior @@ -58,3 +68,18 @@ - `generate-compose.sh` merges templates into final compose files - `setup.sh` generates secrets using `generate-secrets.sh` - `.env.example` documents all configurable variables + + +## Environment Variables Reference + +When adding new environment variables, ensure they're documented in `.env.example`. Key variables that should be present: + +- **Authentication**: `JWT_SECRET`, `JWT_SECRET_EXPIRY`, `API_SECRET` (internal service-to-service auth) +- **ClickHouse**: `CLICKHOUSE_CURRENTS_PASSWORD`, `CLICKHOUSE_ACCESS_TOKEN` (optional token-based auth) +- **Object Storage**: `FILE_STORAGE_REGION` (required for AWS S3, optional for local/MinIO) +- **Initial Setup**: `ON_PREM_EMAIL` (root admin user email) + +## CI/CD + +- GitHub workflows validate compose files using `docker compose config` and `podman compose config` +- Validation runs on both Ubuntu (Docker) and AlmaLinux 8 (Podman) to ensure compatibility diff --git a/on-prem/.env.example b/on-prem/.env.example index 382e78f..6a3d305 100644 --- a/on-prem/.env.example +++ b/on-prem/.env.example @@ -1,165 +1,149 @@ # ============================================================================= -# Docker Compose Configuration +# Required Configuration # ============================================================================= -# These variables are used by docker-compose only (not passed to containers) -# Currents application images -# DC_CURRENTS_IMAGE_REPOSITORY=513558712013.dkr.ecr.us-east-1.amazonaws.com/currents/on-prem/ -# DC_CURRENTS_IMAGE_TAG=staging -# -# Infrastructure service images (full image reference) -# DC_MONGODB_IMAGE=mongo:8.2.3 -# DC_REDIS_IMAGE=redis/redis-stack-server:7.4.0-v8 -# DC_CLICKHOUSE_IMAGE=clickhouse/clickhouse-server:25.8 -# DC_RUSTFS_IMAGE=rustfs/rustfs:1.0.0-alpha.79 -# DC_AWS_CLI_IMAGE=amazon/aws-cli:latest +# These values MUST be set before starting. Run `./scripts/setup.sh` to generate secrets. -# ============================================================================= -# Data Volume Configuration -# ============================================================================= -# By default, data is stored in ./data/ (auto-created) -# Set to a custom path or a pre-created Docker volume name -# -# Examples: -# DC_REDIS_VOLUME=./data/redis # Local path (default) -# DC_REDIS_VOLUME=/mnt/ssd/redis # Custom path -# DC_REDIS_VOLUME=my_redis_volume # Pre-created Docker volume -# -# DC_REDIS_VOLUME=./data/redis -# DC_MONGODB_VOLUME=./data/mongodb -# DC_CLICKHOUSE_VOLUME=./data/clickhouse -# DC_RUSTFS_VOLUME=./data/rustfs -# DC_SCHEDULER_STARTUP_VOLUME=./data/startup +# Initial Setup +ON_PREM_EMAIL=admin@localhost -# ============================================================================= -# Port Configuration -# ============================================================================= -# Configure host ports for services. Format: [host_ip:]port -# Currents services default to all interfaces, databases default to localhost only -# -# DC_DIRECTOR_PORT=1234 # Director API (default: all interfaces) -# DC_API_PORT=4000 # Dashboard/API (default: all interfaces) -# DC_MONGODB_PORT=127.0.0.1:27017 # MongoDB (default: localhost only) -# DC_REDIS_PORT=127.0.0.1:6379 # Redis (default: localhost only) -# DC_CLICKHOUSE_HTTP_PORT=127.0.0.1:8123 # ClickHouse HTTP (default: localhost only) -# DC_CLICKHOUSE_TCP_PORT=127.0.0.1:9123 # ClickHouse TCP (default: localhost only) -# DC_RUSTFS_S3_PORT=9000 # RustFS S3 API (default: all interfaces) -# DC_RUSTFS_CONSOLE_PORT=9001 # RustFS Console (default: all interfaces) +# SMTP information +SMTP_HOST=localhost +SMTP_USER=test +SMTP_PASS=test + +# Authentication (generated by setup.sh) +JWT_SECRET= +API_SECRET= + +# MongoDB (password generated by setup.sh) +MONGODB_PASSWORD= + +# ClickHouse (passwords generated by setup.sh) +CLICKHOUSE_DEFAULT_PASSWORD= +CLICKHOUSE_CURRENTS_PASSWORD= + +# GitLab Integration +# Run `./scripts/generate-secrets key gitlab-key.pem` +# Then `base64 < "gitlab-key.pem" | tr -d '\n'` to get the base64 secret +GITLAB_STATE_SECRET= # ============================================================================= -# Traefik TLS Termination (Optional) +# Frequently Used Configuration # ============================================================================= -# When using the traefik profile, configure TLS termination with a wildcard cert. -# Certificate handling: -# - By default (TRAEFIK_GENERATE_TEMP_CERTS=false): Place wildcard.crt and wildcard.key in data/traefik/certs/ -# - For temporary auto-generated certs: Set TRAEFIK_GENERATE_TEMP_CERTS=true (Traefik generates self-signed certs in memory) -# -# DC_TRAEFIK_IMAGE=traefik:v3.3 # Traefik image -# DC_TRAEFIK_HTTP_PORT=80 # HTTP port (redirects to HTTPS) -# DC_TRAEFIK_HTTPS_PORT=443 # HTTPS port -# DC_TRAEFIK_CERTS_DIR=./data/traefik/certs # Certificate directory -# TRAEFIK_GENERATE_TEMP_CERTS=false # Generate temporary certs (set to true for Traefik to auto-generate) -# DC_TRAEFIK_CONFIG_DIR=./data/traefik/config # Directory for custom Traefik config files -# DC_TRAEFIK_DYNAMIC_CONFIG_PATH=/etc/traefik/dynamic.yml # Path to dynamic config (default uses built-in config, or set to /traefik-config/dynamic.yml for custom) + +# Application URLs +APP_BASE_URL=http://localhost:4000 +CURRENTS_RECORD_API_URL=http://localhost:1234 + +# Additional Email / SMTP +SMTP_PORT=587 +SMTP_SECURE=false +AUTOMATED_REPORTS_EMAIL_FROM="Currents Report " + +# Object Storage (endpoint for external access) +FILE_STORAGE_ENDPOINT="http://localhost:9000" +FILE_STORAGE_BUCKET="currents" +FILE_STORAGE_ACCESS_KEY_ID=${RUSTFS_ACCESS_KEY} +FILE_STORAGE_SECRET_ACCESS_KEY=${RUSTFS_SECRET_KEY} +# FILE_STORAGE_REGION=us-east-1 # Domain configuration for Traefik routing -# TRAEFIK_DOMAIN=example.com # Base domain for wildcard cert -# TRAEFIK_API_SUBDOMAIN=currents-app # Subdomain for API/Dashboard -# TRAEFIK_DIRECTOR_SUBDOMAIN=currents-record # Subdomain for Director -# TRAEFIK_STORAGE_SUBDOMAIN=currents-storage # Subdomain for RustFS S3 API -# TRAEFIK_ENABLE_STORAGE=false # Enable storage routing (automatically set to true when rustfs is included) +# TRAEFIK_DOMAIN=example.com +# TRAEFIK_API_SUBDOMAIN=currents-app +# TRAEFIK_DIRECTOR_SUBDOMAIN=currents-record +# TRAEFIK_STORAGE_SUBDOMAIN=currents-storage +# TRAEFIK_ENABLE_STORAGE=false # ============================================================================= -# URL Configuration +# Other Configuration # ============================================================================= -# Base URLs for the application -APP_BASE_URL=http://localhost:4000 -CURRENTS_RECORD_API_URL=http://localhost:1234 +# Less commonly changed settings with sensible defaults. -# Derived URLs (built from base URLs) +# Derived URLs (built from base URLs - usually don't need to change) API_URL=${APP_BASE_URL}/v1 DASHBOARD_URL=${APP_BASE_URL} AUTOMATED_REPORTS_CURRENTS_DASHBOARD_HOSTNAME=${APP_BASE_URL} +GITLAB_REDIRECT_URL=${APP_BASE_URL}/integrations/gitlab/callback -# ============================================================================= -# Redis Configuration -# ============================================================================= -# Default points to redis service in the compose network -# Change these if using an external Redis instance -REDIS_URI=redis://redis:6379 -REDIS_URI_SLAVE=redis://redis:6379 +# Authentication settings +JWT_SECRET_EXPIRY=10m -# ============================================================================= -# MongoDB Configuration -# ============================================================================= -# Connection settings +# MongoDB MONGODB_USERNAME=currents-user -# Password generated by setup.sh -MONGODB_PASSWORD= MONGODB_DATABASE=currents MONGODB_URI=mongodb://${MONGODB_USERNAME}:${MONGODB_PASSWORD}@mongodb:27017/${MONGODB_DATABASE}?authSource=admin&replicaSet=rs0 -# ============================================================================= -# Object Storage (RustFS / S3) -# ============================================================================= -# For rustfs when using the full data environment +# Redis (default points to redis service in compose network) +REDIS_URI=redis://redis:6379 +REDIS_URI_SLAVE=redis://redis:6379 + +# ClickHouse +CLICKHOUSE_URL=http://clickhouse:8123 +CLICKHOUSE_USERNAME=currents +# CLICKHOUSE_ACCESS_TOKEN= + +# Object Storage (additional settings) RUSTFS_ACCESS_KEY=rustfs-access-key -# Run `./scripts/generate-secrets.sh token` from the root of the project to generate a new secret RUSTFS_SECRET_KEY=rustfs-secret-key -FILE_STORAGE_ENDPOINT="http://localhost:9000" FILE_STORAGE_INTERNAL_ENDPOINT="http://host.docker.internal:9000" -FILE_STORAGE_ACCESS_KEY_ID=${RUSTFS_ACCESS_KEY} -FILE_STORAGE_SECRET_ACCESS_KEY=${RUSTFS_SECRET_KEY} -FILE_STORAGE_BUCKET="currents" FILE_STORAGE_FORCE_PATH_STYLE=true -# ============================================================================= -# ClickHouse Configuration -# ============================================================================= -# Connection settings (uses service name for internal Docker network) -CLICKHOUSE_URL=http://clickhouse:8123 -CLICKHOUSE_USERNAME=currents +# Email (additional settings) +AUTOMATED_REPORTS_EMAIL_BCC= -# Passwords for ClickHouse users (generated by setup.sh) -# Default PASSWORD only used if using the included clickhouse -CLICKHOUSE_DEFAULT_PASSWORD= -# The CURRENTS USER PASSWORD is how all services connect -CLICKHOUSE_CURRENTS_PASSWORD= +# Observability (Coralogix) +# CORALOGIX_API_ENDPOINT= +# CORALOGIX_API_KEY= +# CORALOGIX_APP_NAME="customer-name" -# ============================================================================= -# Authentication -# ============================================================================= -# Run `./scripts/generate-secrets.sh token` from the root of the project to generate a new secret -JWT_SECRET= -JWT_SECRET_EXPIRY=10m # ============================================================================= -# GitLab Integration +# Docker Compose Configuration # ============================================================================= -GITLAB_REDIRECT_URL=${APP_BASE_URL}/integrations/gitlab/callback -# Run `./scripts/generate-secrets key gitlab-key.pem` -# Then `base64 < "gitlab-key.pem" | tr -d '\n'` to get the base64 secret to set here -GITLAB_STATE_SECRET= +# These variables configure docker-compose behavior (DC_ prefix = not passed to containers) -# ============================================================================= -# Email Configuration -# ============================================================================= -EMAIL_TRANSPORTER=smtp -SMTP_HOST=localhost -SMTP_PORT=1025 -SMTP_SECURE=false -SMTP_USER=test -SMTP_PASS=test +# Currents application images +# DC_CURRENTS_IMAGE_REPOSITORY=513558712013.dkr.ecr.us-east-1.amazonaws.com/currents/on-prem/ +# DC_CURRENTS_IMAGE_TAG=staging -# Automated Reports Configuration -AUTOMATED_REPORTS_EMAIL_FROM="Currents Report " -AUTOMATED_REPORTS_EMAIL_BCC= +# Infrastructure service images (full image reference) +# DC_MONGODB_IMAGE=mongo:8.2.3 +# DC_REDIS_IMAGE=redis/redis-stack-server:7.4.0-v8 +# DC_CLICKHOUSE_IMAGE=clickhouse/clickhouse-server:25.8 +# DC_RUSTFS_IMAGE=rustfs/rustfs:1.0.0-alpha.79 +# DC_AWS_CLI_IMAGE=amazon/aws-cli:latest + +# Port Configuration +# Currents services default to all interfaces, databases default to localhost only +# DC_DIRECTOR_PORT=1234 # Director API (default: all interfaces) +# DC_API_PORT=4000 # Dashboard/API (default: all interfaces) +# DC_MONGODB_PORT=127.0.0.1:27017 # MongoDB (default: localhost only) +# DC_REDIS_PORT=127.0.0.1:6379 # Redis (default: localhost only) +# DC_CLICKHOUSE_HTTP_PORT=127.0.0.1:8123 # ClickHouse HTTP (default: localhost only) +# DC_CLICKHOUSE_TCP_PORT=127.0.0.1:9123 # ClickHouse TCP (default: localhost only) +# DC_RUSTFS_S3_PORT=9000 # RustFS S3 API (default: all interfaces) +# DC_RUSTFS_CONSOLE_PORT=9001 # RustFS Console (default: all interfaces) + +# Data Volume Configuration +# By default, data is stored in ./data/ (auto-created) +# DC_REDIS_VOLUME=./data/redis +# DC_MONGODB_VOLUME=./data/mongodb +# DC_CLICKHOUSE_VOLUME=./data/clickhouse +# DC_RUSTFS_VOLUME=./data/rustfs +# DC_SCHEDULER_STARTUP_VOLUME=./data/startup # ============================================================================= -# Observability (Optional) +# Traefik TLS Termination (Optional Profile) # ============================================================================= -# Coralogix support -CORALOGIX_API_ENDPOINT= -CORALOGIX_API_KEY= -CORALOGIX_APP_NAME="customer-name" - -# ON_PREM_EMAIL=admin@currents.local +# Enable with: docker compose --profile tls up +# Certificate handling: +# - Default: Place wildcard.crt and wildcard.key in data/traefik/certs/ +# - Auto-generated: Set TRAEFIK_GENERATE_TEMP_CERTS=true + +# DC_TRAEFIK_IMAGE=traefik:v3.3 +# DC_TRAEFIK_HTTP_PORT=80 +# DC_TRAEFIK_HTTPS_PORT=443 +# DC_TRAEFIK_CERTS_DIR=./data/traefik/certs +# DC_TRAEFIK_CONFIG_DIR=./data/traefik/config +# DC_TRAEFIK_DYNAMIC_CONFIG_PATH=/etc/traefik/dynamic.yml +# TRAEFIK_GENERATE_TEMP_CERTS=false \ No newline at end of file diff --git a/on-prem/docker-compose.cache.yml b/on-prem/docker-compose.cache.yml index a0e99cf..4cc463e 100644 --- a/on-prem/docker-compose.cache.yml +++ b/on-prem/docker-compose.cache.yml @@ -23,7 +23,8 @@ services: networks: - default environment: - - CURRENTS_ENV=onprem + CURRENTS_ENV: onprem + EMAIL_TRANSPORTER: smtp depends_on: redis: condition: service_started @@ -39,9 +40,10 @@ services: env_file: - .env environment: - - CURRENTS_ENV=onprem - - INCLUDE_DASHBOARD=onprem - - CLICKHOUSE_PASSWORD=${CLICKHOUSE_CURRENTS_PASSWORD} + CURRENTS_ENV: onprem + INCLUDE_DASHBOARD: onprem + CLICKHOUSE_PASSWORD: ${CLICKHOUSE_CURRENTS_PASSWORD} + EMAIL_TRANSPORTER: smtp depends_on: redis: condition: service_started @@ -54,8 +56,9 @@ services: env_file: - .env environment: - - CURRENTS_ENV=onprem - - CLICKHOUSE_PASSWORD=${CLICKHOUSE_CURRENTS_PASSWORD} + CURRENTS_ENV: onprem + CLICKHOUSE_PASSWORD: ${CLICKHOUSE_CURRENTS_PASSWORD} + EMAIL_TRANSPORTER: smtp depends_on: redis: condition: service_started @@ -68,8 +71,9 @@ services: env_file: - .env environment: - - CURRENTS_ENV=onprem - - CLICKHOUSE_PASSWORD=${CLICKHOUSE_CURRENTS_PASSWORD} + CURRENTS_ENV: onprem + CLICKHOUSE_PASSWORD: ${CLICKHOUSE_CURRENTS_PASSWORD} + EMAIL_TRANSPORTER: smtp depends_on: redis: condition: service_started @@ -82,9 +86,10 @@ services: env_file: - .env environment: - - CURRENTS_ENV=onprem - - CLICKHOUSE_PASSWORD=${CLICKHOUSE_CURRENTS_PASSWORD} - - RUN_STARTUP_TASKS=true + CURRENTS_ENV: onprem + CLICKHOUSE_PASSWORD: ${CLICKHOUSE_CURRENTS_PASSWORD} + RUN_STARTUP_TASKS: "true" + EMAIL_TRANSPORTER: smtp volumes: - ${DC_SCHEDULER_STARTUP_VOLUME:-./data/startup}:/app/packages/scheduler/dist/.startup depends_on: @@ -99,7 +104,8 @@ services: env_file: - .env environment: - - CURRENTS_ENV=onprem + CURRENTS_ENV: onprem + EMAIL_TRANSPORTER: smtp depends_on: redis: condition: service_started diff --git a/on-prem/docker-compose.database.yml b/on-prem/docker-compose.database.yml index 65af03e..58486a6 100644 --- a/on-prem/docker-compose.database.yml +++ b/on-prem/docker-compose.database.yml @@ -23,7 +23,8 @@ services: networks: - default environment: - - CURRENTS_ENV=onprem + CURRENTS_ENV: onprem + EMAIL_TRANSPORTER: smtp depends_on: clickhouse: condition: service_healthy @@ -45,9 +46,10 @@ services: env_file: - .env environment: - - CURRENTS_ENV=onprem - - INCLUDE_DASHBOARD=onprem - - CLICKHOUSE_PASSWORD=${CLICKHOUSE_CURRENTS_PASSWORD} + CURRENTS_ENV: onprem + INCLUDE_DASHBOARD: onprem + CLICKHOUSE_PASSWORD: ${CLICKHOUSE_CURRENTS_PASSWORD} + EMAIL_TRANSPORTER: smtp depends_on: clickhouse: condition: service_healthy @@ -66,8 +68,9 @@ services: env_file: - .env environment: - - CURRENTS_ENV=onprem - - CLICKHOUSE_PASSWORD=${CLICKHOUSE_CURRENTS_PASSWORD} + CURRENTS_ENV: onprem + CLICKHOUSE_PASSWORD: ${CLICKHOUSE_CURRENTS_PASSWORD} + EMAIL_TRANSPORTER: smtp depends_on: clickhouse: condition: service_healthy @@ -86,8 +89,9 @@ services: env_file: - .env environment: - - CURRENTS_ENV=onprem - - CLICKHOUSE_PASSWORD=${CLICKHOUSE_CURRENTS_PASSWORD} + CURRENTS_ENV: onprem + CLICKHOUSE_PASSWORD: ${CLICKHOUSE_CURRENTS_PASSWORD} + EMAIL_TRANSPORTER: smtp depends_on: clickhouse: condition: service_healthy @@ -106,9 +110,10 @@ services: env_file: - .env environment: - - CURRENTS_ENV=onprem - - CLICKHOUSE_PASSWORD=${CLICKHOUSE_CURRENTS_PASSWORD} - - RUN_STARTUP_TASKS=true + CURRENTS_ENV: onprem + CLICKHOUSE_PASSWORD: ${CLICKHOUSE_CURRENTS_PASSWORD} + RUN_STARTUP_TASKS: "true" + EMAIL_TRANSPORTER: smtp volumes: - ${DC_SCHEDULER_STARTUP_VOLUME:-./data/startup}:/app/packages/scheduler/dist/.startup depends_on: @@ -129,7 +134,8 @@ services: env_file: - .env environment: - - CURRENTS_ENV=onprem + CURRENTS_ENV: onprem + EMAIL_TRANSPORTER: smtp depends_on: clickhouse: condition: service_healthy diff --git a/on-prem/docker-compose.full.yml b/on-prem/docker-compose.full.yml index 8502a9c..0231939 100644 --- a/on-prem/docker-compose.full.yml +++ b/on-prem/docker-compose.full.yml @@ -23,7 +23,8 @@ services: networks: - default environment: - - CURRENTS_ENV=onprem + CURRENTS_ENV: onprem + EMAIL_TRANSPORTER: smtp depends_on: clickhouse: condition: service_healthy @@ -45,9 +46,10 @@ services: env_file: - .env environment: - - CURRENTS_ENV=onprem - - INCLUDE_DASHBOARD=onprem - - CLICKHOUSE_PASSWORD=${CLICKHOUSE_CURRENTS_PASSWORD} + CURRENTS_ENV: onprem + INCLUDE_DASHBOARD: onprem + CLICKHOUSE_PASSWORD: ${CLICKHOUSE_CURRENTS_PASSWORD} + EMAIL_TRANSPORTER: smtp depends_on: clickhouse: condition: service_healthy @@ -66,8 +68,9 @@ services: env_file: - .env environment: - - CURRENTS_ENV=onprem - - CLICKHOUSE_PASSWORD=${CLICKHOUSE_CURRENTS_PASSWORD} + CURRENTS_ENV: onprem + CLICKHOUSE_PASSWORD: ${CLICKHOUSE_CURRENTS_PASSWORD} + EMAIL_TRANSPORTER: smtp depends_on: clickhouse: condition: service_healthy @@ -86,8 +89,9 @@ services: env_file: - .env environment: - - CURRENTS_ENV=onprem - - CLICKHOUSE_PASSWORD=${CLICKHOUSE_CURRENTS_PASSWORD} + CURRENTS_ENV: onprem + CLICKHOUSE_PASSWORD: ${CLICKHOUSE_CURRENTS_PASSWORD} + EMAIL_TRANSPORTER: smtp depends_on: clickhouse: condition: service_healthy @@ -106,9 +110,10 @@ services: env_file: - .env environment: - - CURRENTS_ENV=onprem - - CLICKHOUSE_PASSWORD=${CLICKHOUSE_CURRENTS_PASSWORD} - - RUN_STARTUP_TASKS=true + CURRENTS_ENV: onprem + CLICKHOUSE_PASSWORD: ${CLICKHOUSE_CURRENTS_PASSWORD} + RUN_STARTUP_TASKS: "true" + EMAIL_TRANSPORTER: smtp volumes: - ${DC_SCHEDULER_STARTUP_VOLUME:-./data/startup}:/app/packages/scheduler/dist/.startup depends_on: @@ -129,7 +134,8 @@ services: env_file: - .env environment: - - CURRENTS_ENV=onprem + CURRENTS_ENV: onprem + EMAIL_TRANSPORTER: smtp depends_on: clickhouse: condition: service_healthy diff --git a/on-prem/templates/compose.currents.yml b/on-prem/templates/compose.currents.yml index 0b92364..3960fa8 100644 --- a/on-prem/templates/compose.currents.yml +++ b/on-prem/templates/compose.currents.yml @@ -12,7 +12,8 @@ services: networks: - default environment: - - CURRENTS_ENV=onprem + CURRENTS_ENV: onprem + EMAIL_TRANSPORTER: smtp api: hostname: api @@ -25,9 +26,10 @@ services: env_file: - .env environment: - - CURRENTS_ENV=onprem - - INCLUDE_DASHBOARD=onprem - - CLICKHOUSE_PASSWORD=${CLICKHOUSE_CURRENTS_PASSWORD} + CURRENTS_ENV: onprem + INCLUDE_DASHBOARD: onprem + CLICKHOUSE_PASSWORD: ${CLICKHOUSE_CURRENTS_PASSWORD} + EMAIL_TRANSPORTER: smtp changestreams-worker: image: ${DC_CURRENTS_IMAGE_REPOSITORY:-currents-}change-streams:${DC_CURRENTS_IMAGE_TAG:-dev} @@ -37,8 +39,9 @@ services: env_file: - .env environment: - - CURRENTS_ENV=onprem - - CLICKHOUSE_PASSWORD=${CLICKHOUSE_CURRENTS_PASSWORD} + CURRENTS_ENV: onprem + CLICKHOUSE_PASSWORD: ${CLICKHOUSE_CURRENTS_PASSWORD} + EMAIL_TRANSPORTER: smtp write-worker: image: ${DC_CURRENTS_IMAGE_REPOSITORY:-currents-}writer:${DC_CURRENTS_IMAGE_TAG:-dev} @@ -48,8 +51,9 @@ services: env_file: - .env environment: - - CURRENTS_ENV=onprem - - CLICKHOUSE_PASSWORD=${CLICKHOUSE_CURRENTS_PASSWORD} + CURRENTS_ENV: onprem + CLICKHOUSE_PASSWORD: ${CLICKHOUSE_CURRENTS_PASSWORD} + EMAIL_TRANSPORTER: smtp scheduler: image: ${DC_CURRENTS_IMAGE_REPOSITORY:-currents-}scheduler:${DC_CURRENTS_IMAGE_TAG:-dev} @@ -59,9 +63,10 @@ services: env_file: - .env environment: - - CURRENTS_ENV=onprem - - CLICKHOUSE_PASSWORD=${CLICKHOUSE_CURRENTS_PASSWORD} - - RUN_STARTUP_TASKS=true + CURRENTS_ENV: onprem + CLICKHOUSE_PASSWORD: ${CLICKHOUSE_CURRENTS_PASSWORD} + RUN_STARTUP_TASKS: "true" + EMAIL_TRANSPORTER: smtp volumes: - ${DC_SCHEDULER_STARTUP_VOLUME:-./data/startup}:/app/packages/scheduler/dist/.startup @@ -73,7 +78,8 @@ services: env_file: - .env environment: - - CURRENTS_ENV=onprem + CURRENTS_ENV: onprem + EMAIL_TRANSPORTER: smtp networks: default: null