gendesign/docker-compose.obsidian.yml
bot-backend 15e1cb1d7d
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
fix(devops): couchdb healthcheck 401 — auth /_up с COUCHDB_USER/PASSWORD
/_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 на живом проде перед пушем.
2026-07-04 17:19:27 +05:00

52 lines
2 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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