mirror of
https://github.com/oxynote/oxynote.git
synced 2026-10-17 02:49:18 +02:00
267 lines
6.9 KiB
YAML
267 lines
6.9 KiB
YAML
services:
|
|
caddy:
|
|
image: caddy:2.9-alpine
|
|
container_name: caddy
|
|
volumes:
|
|
- caddy_data:/data
|
|
- caddy_config:/config
|
|
- ./Caddyfile:/etc/caddy/Caddyfile
|
|
restart: unless-stopped
|
|
ports:
|
|
- "8080:8080"
|
|
- "8081:8081"
|
|
- "8082:8082"
|
|
logging:
|
|
driver: local
|
|
options:
|
|
mode: non-blocking
|
|
max-size: 10m
|
|
max-file: "3"
|
|
web:
|
|
container_name: web
|
|
image: ghcr.io/oxynote/web:dev
|
|
environment:
|
|
# SSR inside the container must reach the services directly; these
|
|
# compose hostnames don't resolve on the host, which is why they live
|
|
# here and not in the shared env template.
|
|
- NUXT_CORE_API_INTERNAL_HTTP_URL=http://core:8080
|
|
- NUXT_AUTH_REALTIME_API_INTERNAL_HTTP_URL=http://auth-realtime:8081
|
|
# not started by plain `up` — `make dev` runs web on the host instead;
|
|
# `make run` / `make start` enable this profile for the full stack.
|
|
profiles:
|
|
- web
|
|
build:
|
|
context: ../web
|
|
dockerfile: Dockerfile.dev
|
|
env_file:
|
|
- ./env/web.local.env
|
|
restart: unless-stopped
|
|
logging:
|
|
driver: local
|
|
options:
|
|
mode: non-blocking
|
|
max-size: 10m
|
|
max-file: "3"
|
|
auth-realtime:
|
|
container_name: auth-realtime
|
|
image: ghcr.io/oxynote/auth-realtime:dev
|
|
build:
|
|
context: ../server/auth-realtime
|
|
dockerfile: Dockerfile.dev
|
|
env_file:
|
|
- ./env/auth-realtime.local.env
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
valkey:
|
|
condition: service_healthy
|
|
restart: unless-stopped
|
|
logging:
|
|
driver: local
|
|
options:
|
|
mode: non-blocking
|
|
max-size: 10m
|
|
max-file: "3"
|
|
core:
|
|
container_name: core
|
|
image: ghcr.io/oxynote/core:dev
|
|
platform: linux/amd64
|
|
env_file:
|
|
- ./env/core.local.env
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
meilisearch:
|
|
condition: service_started
|
|
volumes:
|
|
# optional GitHub App private key: drop oxynote.private-key.pem into
|
|
# docker/github/ and set OXYNOTE_CORE_GITHUB_APP_ID to enable the
|
|
# GitHub App integration.
|
|
- ./github:/etc/oxynote/core/github:ro
|
|
restart: unless-stopped
|
|
logging:
|
|
driver: local
|
|
options:
|
|
mode: non-blocking
|
|
max-size: 10m
|
|
max-file: "3"
|
|
datagen:
|
|
container_name: datagen
|
|
image: ghcr.io/oxynote/datagen:dev
|
|
platform: linux/amd64
|
|
environment:
|
|
- DATAGEN_POSTGRES_DSN=postgresql://demouser:demopass@postgres/demodb?sslmode=disable
|
|
- DATAGEN_MARIADB_DSN=demouser:demopass@tcp(mariadb:3306)/demodb?parseTime=true
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
mariadb:
|
|
condition: service_healthy
|
|
restart: unless-stopped
|
|
logging:
|
|
driver: local
|
|
options:
|
|
mode: non-blocking
|
|
max-size: 10m
|
|
max-file: "3"
|
|
postgres:
|
|
image: pgvector/pgvector:pg16
|
|
volumes:
|
|
- postgres_data:/var/lib/postgresql/data
|
|
- ./demo/postgres/init-demo-db.sh:/docker-entrypoint-initdb.d/init-demo-db.sh
|
|
environment:
|
|
POSTGRES_USER: devuser
|
|
POSTGRES_PASSWORD: devpass
|
|
POSTGRES_DB: devdb
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U devuser -d devdb"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
logging:
|
|
driver: local
|
|
options:
|
|
mode: non-blocking
|
|
max-size: 10m
|
|
max-file: "3"
|
|
mariadb:
|
|
image: mariadb:11-noble
|
|
volumes:
|
|
- mariadb_data:/var/lib/mysql
|
|
- ./demo/mariadb/init-demo-db.sql:/docker-entrypoint-initdb.d/init-demo-db.sql
|
|
environment:
|
|
MARIADB_ROOT_PASSWORD: devroot
|
|
MARIADB_USER: devuser
|
|
MARIADB_PASSWORD: devpass
|
|
MARIADB_DATABASE: devdb
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
logging:
|
|
driver: local
|
|
options:
|
|
mode: non-blocking
|
|
max-size: 10m
|
|
max-file: "3"
|
|
meilisearch:
|
|
container_name: meilisearch
|
|
image: getmeili/meilisearch:v1.23
|
|
volumes:
|
|
- meilisearch_data:/meili_data
|
|
environment:
|
|
- MEILI_MASTER_KEY=devmasterkey
|
|
- MEILI_ENV=development
|
|
restart: unless-stopped
|
|
logging:
|
|
driver: local
|
|
options:
|
|
mode: non-blocking
|
|
max-size: 10m
|
|
max-file: "3"
|
|
valkey:
|
|
container_name: valkey
|
|
image: valkey/valkey:9.0-alpine
|
|
volumes:
|
|
- valkey_data:/data
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["CMD", "valkey-cli", "ping"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
logging:
|
|
driver: local
|
|
options:
|
|
mode: non-blocking
|
|
max-size: 10m
|
|
max-file: "3"
|
|
minio:
|
|
container_name: minio
|
|
image: minio/minio
|
|
command: server --console-address ":9001" /data
|
|
volumes:
|
|
- minio_data:/data
|
|
environment:
|
|
- MINIO_ROOT_USER=sparta
|
|
- MINIO_ROOT_PASSWORD=chad_warrior
|
|
restart: unless-stopped
|
|
logging:
|
|
driver: local
|
|
options:
|
|
mode: non-blocking
|
|
max-size: 10m
|
|
max-file: "3"
|
|
changedetection:
|
|
container_name: changedetection
|
|
image: dgtlmoon/changedetection.io
|
|
volumes:
|
|
- changedetection_data:/datastore
|
|
environment:
|
|
- HIDE_REFERER=true
|
|
- LOGGER_LEVEL=WARNING
|
|
- PLAYWRIGHT_DRIVER_URL=ws://browser-sockpuppet-chrome:3000
|
|
depends_on:
|
|
browser-sockpuppet-chrome:
|
|
condition: service_started
|
|
restart: unless-stopped
|
|
logging:
|
|
driver: local
|
|
options:
|
|
mode: non-blocking
|
|
max-size: 10m
|
|
max-file: "3"
|
|
browser-sockpuppet-chrome:
|
|
container_name: browser-sockpuppet-chrome
|
|
hostname: browser-sockpuppet-chrome
|
|
image: dgtlmoon/sockpuppetbrowser:latest
|
|
cap_add:
|
|
- SYS_ADMIN # TODO: Recommended in their docker-compose example, need to double-check this.
|
|
restart: unless-stopped
|
|
environment:
|
|
- SCREEN_WIDTH=1920
|
|
- SCREEN_HEIGHT=1024
|
|
- SCREEN_DEPTH=16
|
|
- MAX_CONCURRENT_CHROME_PROCESSES=10
|
|
- LOG_LEVEL=WARNING
|
|
prometheus:
|
|
container_name: prometheus
|
|
image: prom/prometheus:latest
|
|
restart: unless-stopped
|
|
volumes:
|
|
- prometheus_data:/prometheus
|
|
- ./demo/prometheus:/etc/prometheus/
|
|
command:
|
|
- "--config.file=/etc/prometheus/prometheus.yaml"
|
|
logging:
|
|
driver: local
|
|
options:
|
|
mode: non-blocking
|
|
max-size: 10m
|
|
max-file: "3"
|
|
grafana:
|
|
image: grafana/grafana:latest
|
|
container_name: grafana
|
|
ports:
|
|
- "8083:3000"
|
|
volumes:
|
|
- grafana_storage:/var/lib/grafana
|
|
environment:
|
|
- GF_SECURITY_ADMIN_USER=admin
|
|
- GF_SECURITY_ADMIN_PASSWORD=admin
|
|
|
|
volumes:
|
|
minio_data:
|
|
mariadb_data:
|
|
postgres_data:
|
|
meilisearch_data:
|
|
valkey_data:
|
|
caddy_data:
|
|
caddy_config:
|
|
changedetection_data:
|
|
prometheus_data:
|
|
grafana_storage:
|