All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI / changes (pull_request) Successful in 7s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
/_up штатно unauth liveness-путь CouchDB, но этот инстанс держит chttpd/require_valid_user=true (публично на obsidian.gendsgn.ru) — healthcheck без креды ловил честный 401 и 6 недель светил 'unhealthy' на живом сервисе (Obsidian LiveSync работал нормально, это чисто ложный health-статус). CMD-SHELL + -u $COUCHDB_USER:$COUCHDB_PASSWORD (креды уже в environment контейнера) — verified 200 на живом проде перед пушем.
52 lines
2 KiB
YAML
52 lines
2 KiB
YAML
# Obsidian Self-hosted LiveSync stack — CouchDB.
|
||
#
|
||
# Деплоится ОТДЕЛЬНО от main стека:
|
||
# docker compose -f docker-compose.obsidian.yml up -d
|
||
#
|
||
# Связан с main-stack через external network `gendesign_shared`. Caddy в
|
||
# main-stack маршрутизирует obsidian.gendsgn.ru → couchdb:5984 через эту сеть.
|
||
#
|
||
# Сеть должна быть создана один раз вручную:
|
||
# docker network create gendesign_shared
|
||
# (или используй scripts/setup-obsidian-stack.sh).
|
||
|
||
services:
|
||
couchdb:
|
||
image: couchdb:3
|
||
container_name: gendesign-couchdb
|
||
restart: unless-stopped
|
||
# env_file подгружается ДО env: + interpolation. Это критично — без него
|
||
# compose видит пустой COUCHDB_PASSWORD и couchdb падает в Admin-Party mode.
|
||
env_file:
|
||
- path: ./backend/.env.runtime
|
||
required: false
|
||
- path: ./backend/.env
|
||
required: false
|
||
environment:
|
||
COUCHDB_USER: ${COUCHDB_USER:-obsidian}
|
||
COUCHDB_PASSWORD: ${COUCHDB_PASSWORD:?must be set in backend/.env.runtime}
|
||
volumes:
|
||
- couchdb_data:/opt/couchdb/data
|
||
- couchdb_config:/opt/couchdb/etc/local.d
|
||
expose:
|
||
- "5984"
|
||
networks:
|
||
- shared
|
||
# CMD-SHELL (не CMD) — нужна интерполяция $COUCHDB_USER/$COUCHDB_PASSWORD из
|
||
# environment контейнера. Без -u: этот инстанс держит chttpd/require_valid_user=true
|
||
# (публично на obsidian.gendsgn.ru), поэтому даже /_up (штатно unauth liveness-путь
|
||
# CouchDB) отдаёт 401 → healthcheck ложно "unhealthy" при живом сервисе.
|
||
healthcheck:
|
||
test: ["CMD-SHELL", "curl -fsS -u $$COUCHDB_USER:$$COUCHDB_PASSWORD http://localhost:5984/_up"]
|
||
interval: 30s
|
||
timeout: 10s
|
||
retries: 5
|
||
|
||
volumes:
|
||
couchdb_data:
|
||
couchdb_config:
|
||
|
||
networks:
|
||
shared:
|
||
external: true
|
||
name: gendesign_shared
|