diff --git a/.github/workflows/deploy-obsidian.yml b/.github/workflows/deploy-obsidian.yml index d683310a..6895a626 100644 --- a/.github/workflows/deploy-obsidian.yml +++ b/.github/workflows/deploy-obsidian.yml @@ -47,12 +47,24 @@ jobs: git reset --hard origin/main # Создать shared network если её ещё нет (idempotent). - # Эта же сеть используется Caddy в main-stack. docker network inspect gendesign_shared >/dev/null 2>&1 \ || docker network create gendesign_shared - # Стек CouchDB поднимается с собственным project-name, - # чтобы main `docker compose ps` не показывал его как часть main. + # Загрузить COUCHDB_USER/PASSWORD из .env.runtime до compose up + # (compose также читает .env.runtime через env_file, но + # `${COUCHDB_PASSWORD:?...}` валидация требует переменную в shell). + if [ -f backend/.env.runtime ]; then + set -a + # shellcheck source=/dev/null + source backend/.env.runtime + set +a + fi + if [ -z "${COUCHDB_PASSWORD:-}" ]; then + echo "ERROR: COUCHDB_PASSWORD не задан в backend/.env.runtime" + exit 1 + fi + + # Стек CouchDB поднимается с собственным project-name. docker compose -p gendesign-obsidian \ -f docker-compose.obsidian.yml pull docker compose -p gendesign-obsidian \ diff --git a/docker-compose.obsidian.yml b/docker-compose.obsidian.yml index 649fea8e..b5d971d7 100644 --- a/docker-compose.obsidian.yml +++ b/docker-compose.obsidian.yml @@ -15,9 +15,16 @@ services: 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} + COUCHDB_PASSWORD: ${COUCHDB_PASSWORD:?must be set in backend/.env.runtime} volumes: - couchdb_data:/opt/couchdb/data - couchdb_config:/opt/couchdb/etc/local.d