fix(caddy): разделение сайтов по хостам доходит до контейнера
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI / changes (pull_request) Successful in 10s
CI Trade-In / browser-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
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI / changes (pull_request) Successful in 10s
CI Trade-In / browser-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
#3059 развёл восемь доменов по двум файлам и научил Caddyfile импортировать подмножество через `import caddy/sites/{$CADDY_SITES:*}.caddy`. Но у сервиса caddy в environment стоял только TRADEIN_INTERNAL_AUTH_SECRET, а env_file нет вовсе — переменной в контейнере не было никогда. Плейсхолдер такого вида раскрывает сам Caddy из окружения своего процесса, а не compose при разборе файла. Значит значение с хоста до него не доходило, всегда работал дефолт `*`, и всё разделение существовало только на бумаге. Обнаружилось бы это в день переезда и молча: Caddy на продовом хосте импортировал бы и блок инфраструктурных доменов, пошёл бы выпускать сертификаты для obsidian, errors и git, чей DNS остаётся на другой машине, HTTP-01 падал бы, а Let's Encrypt при этом считает неудачи — пять на домен в час. Дефолт `*` сохранён, поэтому сегодня не меняется ничего: пока переменная не задана ни на одном хосте, импортируются оба файла ровно как раньше. В окне переезда достаточно задать её на каждой машине. Проверено на живом caddy:2 через `caddy adapt` с реальным конфигом, по списку host-матчеров в готовом JSON: переменная не задана — восемь доменов (gendsgn.ru, www, три меры, obsidian, errors, git); CADDY_SITES=apps — пять уезжающих; CADDY_SITES=infra — три остающихся. Refs #3059, #3057
This commit is contained in:
parent
de157b1024
commit
00df38bc2a
1 changed files with 14 additions and 0 deletions
|
|
@ -683,6 +683,20 @@ services:
|
|||
# Пустой дефолт = fail-open (backend не проверяет) → ничего не ломается до
|
||||
# провижининга. Значение задаётся руками в /opt/gendesign/.env на VPS.
|
||||
TRADEIN_INTERNAL_AUTH_SECRET: ${TRADEIN_INTERNAL_AUTH_SECRET:-}
|
||||
# #3059: какие site-блоки импортирует Caddyfile (`import
|
||||
# caddy/sites/{$CADDY_SITES:*}.caddy`). Плейсхолдер раскрывает САМ Caddy
|
||||
# из окружения СВОЕГО контейнера, а не compose из файла окружения хоста —
|
||||
# поэтому переменную обязательно пробрасывать сюда. Без этой строки
|
||||
# значение с хоста до Caddy не доходит и всегда работает дефолт `*`,
|
||||
# то есть оба файла сразу, а разделение хостов молча не срабатывает:
|
||||
# после переезда (#3057) Caddy на продовом хосте начал бы выпускать
|
||||
# сертификаты для obsidian/errors/git, чей DNS остаётся на
|
||||
# инфраструктурном хосте — HTTP-01 падает, а Let's Encrypt считает
|
||||
# неудачи (5 на домен в час).
|
||||
# Дефолт `*` = сегодняшнее поведение бит в бит: пока переменная не задана
|
||||
# ни на одном хосте, импортируются оба файла, как и до этой строки.
|
||||
# В окне: на продовом хосте CADDY_SITES=apps, на инфраструктурном=infra.
|
||||
CADDY_SITES: ${CADDY_SITES:-*}
|
||||
volumes:
|
||||
- ./Caddyfile:/etc/caddy/Caddyfile:ro
|
||||
- ./caddy/users.caddy.snippet:/etc/caddy/caddy/users.caddy.snippet:ro
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue