SubLaneSubLane

Развертывание и модернизация

SubLane Руководство: развертывание и модернизация.

Для вашей первой локальной установки следуйте Первая просьбаИспользуйте эту страницу при выборе метода развертывания, настройке удаленного экземпляра или обновлении.

SubLane работает как один процесс со встроенным интерфейсом и SQLite.Производство не требует Node.js, Redis или отдельного прокси-сервиса. Запустите один экземпляр против каждого каталога данных.

Опубликовано Docker изображения

Tagged Releases Опубликовано ghcr.io/murongg/sublane для linux/amd64 и linux/arm64. Docker Выберите архитектуру хоста. Изображения общедоступны и могут быть извлечены без входа в GHCR. Развертывание требует Docker с Compose; не требуется проверка источника, Go, Node.js или локальная сборка изображений.

Руководство Compose Примеры ниже PIN опубликовано 0.1.0-rc.1 Предварительный выпуск. SUBLANE_IMAGE Для ручного развертывания: Compose по умолчанию latest, которая публикуется только со стабильным релизом.

ТэгЗначение
0.1.0Пример фиксированной стабильной версии; используйте фактически опубликованную версию
0.1.0-rc.1Опубликовано: не обновляется latest
latestУспешно продвигаемая стабильная версия
0.1.0-amd64 / 0.1.0-arm64Пер-архитектура выпускает изображения

Используйте фиксированную версию или дайджест для повторяемых развертываний. Новое изображение, появляющееся в GHCR, не обновляет автоматически работающий контейнер.

Установить скрипт

Запустите установщик с терминала на выбор Docker или опубликованный двоичный код Linux, обычный экземпляр или демо-версия только для чтения, а затем без прокси, Caddy или Nginx:

Используйте Up/Down или ключ номера, чтобы выделить опцию, затем введите для подтверждения. Первый вариант выбирается по умолчанию. Базовые терминалы используют пронумерованные текстовые подсказки. Домен остается текстовым вводом, а установщик показывает сгенерированную конфигурацию для подтверждения перед развертыванием. Поставляемые флаги пропускают соответствующие им варианты; --non-interactive Отключает все подсказки.

Install script · 1
curl -fsSL https://raw.githubusercontent.com/murongg/SubLane/main/scripts/install.sh | bash

Без --versionСценарий выбирает GitHubПоследний стабильный релиз. Только когда не существует стабильного релиза, он выбирает последний опубликованный предварительный выпуск, исключая черновики. Выбранная конкретная версия сохраняется в сгенерированной конфигурации, поэтому перезапуск не изменяет версии молча. GitHub API Ошибки останавливают установку вместо запуска резервного канала.

Сценарий проверяет выбранный артефакт выпуска против SHA256SUMS Перед установкой в новый ./sublane баш, кудрявый и любой другой sha256sum или shasum Для автоматического выбора версии требуется jq. Docker режим требует Docker Compose Бинарный режим поддерживает Linux amd64/arm64, требует рабочего системного менеджера пользователей, позволяет обслуживать пользователей и ждет /readyzОн не устанавливает DockerCaddy или Nginx, и не строится из источника.

Чтобы выбрать опубликованную версию, новый каталог и порт хоста без подсказок:

Install script · 2
curl -fsSL https://raw.githubusercontent.com/murongg/SubLane/main/scripts/install.sh | bash -s -- \
  --version 0.1.0-rc.1 --dir ./team-gateway --port 8088 --runtime docker --proxy none --non-interactive

Теги версий могут включать в себя ведущие vБэкэнд-порт остается привязанным к 127.0.0.1Когда терминал недоступен, обычный экземпляр использует Docker Без прокси остается дефолт; проход --runtime, --proxyили --demo для выбора других режимов. Для удаленного сервера используйте туннель SSH для начальной настройки или настройки HTTPS обратный прокси.

Установщик использует ss (от iproute2) или lsof проверить выбранный порт бэкэнда перед загрузкой и еще раз перед созданием развертывания.Если слушатель петлевого замыкания или wildcard уже использует этот порт, он останавливается и просит вас выбрать неиспользованный порт с помощью --portНапример, --port 8088Установите любую утилиту, если ни одна из них не доступна. Существующий прокси-сервер на портах 80 или 443 не блокирует установку с использованием бэкэнд-порта 8080. Проверки не могут зарезервировать порт; проверки здоровья при запуске все еще ловят конфликты, которые появляются после.

Например, выберите опубликованный двоичный файл и сгенерируйте Caddyfile для публичного домена:

curl -fsSL https://raw.githubusercontent.com/murongg/SubLane/main/scripts/install.sh | bash -s -- \
  --runtime binary --proxy caddy --domain sublane.example.com

--domain Необязательно с Caddy или Nginx. Без него сгенерированный прокси слушает 127.0.0.1:80 над головой HTTP и SUBLANE_PUBLIC_URL С доменом установщик устанавливает SUBLANE_PUBLIC_URL=https://<domain> и генерирует HTTPS конфигурация прокси. Она показывает конфигурацию перед установкой, но не копирует и не перезагружает прокси-сервис.Обзор сгенерированного Caddyfile или nginx.conf и применять его самостоятельно; шаблон Nginx принимает файлы сертификатов /etc/letsencrypt/live/<domain>/.

Для Dockerустановщик пишет выбранное изображение, порт и уникальный Compose Название проекта для .envДержи это при себе. docker.compose.yaml; он идентифицирует объем данных развертывания. Для двоичного режима он генерирует sublane.env, start.sh и связанного системного пользовательского блока; данные остаются в частном data/ Служба системного пользователя может остановиться, когда пользователь выходит из системы, если не включено задерживание; loginctl show-user "$USER" -p Linger и устроить затяжку, если требуется без присмотра эксплуатация. Новые установки отказываются от существующих каталогов и симлинков. Существующая установка, управляемая скриптом, может быть обновлена тем же скриптом, что описано ниже. Если запуск не удается, конфигурация и любые созданные данные сохраняются для проверки.

Обновление скрипт-управляемой установки

Первый экспортировать и проверять резервную копию базы данных, и читать заметки о целевом выпуске. Запустить сценарий из родительского каталога установки. В терминале существующая целевая программа предлагает Обновить существующий экземпляр и запрашивает подтверждение перед развертыванием. Выбрать обновление в явном виде:

Update an existing installation
curl -fsSL https://raw.githubusercontent.com/murongg/SubLane/main/scripts/install.sh | bash -s -- \
  --update --dir ./sublane

Без --version, обновления используют тот же выбор конюшни / предварительного выпуска, что и установка. --version <published-version> Чтобы освободиться, --wait-timeout 120 чтобы изменить готовность к ожиданию, или --non-interactive Сценарий обнаруживает существующую среду выполнения; только флаги установки, такие как: --runtime, --port, --proxy и --demo Отклоняется во время обновления.

Docker Обновления сохраняют Compose Файл и название проекта, только изменения SUBLANE_IMAGE в .env, вытащить выбранное изображение и воссоздать сервис с помощью ожидания здоровья. Бинарные обновления проверяют архив, заменяют исполняемую и упакованную документацию / лицензионные файлы, перезапускают существующий системный пользовательский блок и ждут /readyz.Файлы окружения, пусковая установка, пользовательский блок, конфигурация прокси и пути передачи данных сохраняются. Ожидается, что существующий порт службы будет занят, поэтому обновления не запускают проверки портов новой установки.

Загрузка, контрольная сумма, конфигурация и сбои при выводе изображений оставляют развернутые файлы без изменений. Перед заменой скрипт сохраняет предыдущие файлы программы/конфигурации в частном порядке .update-backup.* Каталог внутри установки и печатает ее путь. Эти файлы не являются резервной копией базы данных. Неудавшийся стартап сохраняет их и текущие данные о развертывании для проверки, сообщает о сбое и автоматически не запускает более старую версию против потенциально перенесенной базы данных. восстановление и откат когда требуется восстановление данных. Одновременное обновление отказано; если процесс был насильственно убит, удалите .update-lock Только после подтверждения отсутствия обновления остается активным.

Этот путь обновления поддерживает установки, созданные по сценарию. Ручные развертывания и развертывания, которые требуют дополнительных Compose Файлы Override должны использовать ручная процедура обновленияВключая все переопределения при последующих стартах.

Чтобы просмотреть сценарий перед его запуском, загрузите его с curl -fsSL https://raw.githubusercontent.com/murongg/SubLane/main/scripts/install.sh -o install.shТогда беги bash install.sh --help или bash install.sh после его пересмотра.

Ручной Compose развертывание

Создайте каталог развертывания и загрузите docker.compose.yaml Из выбранного GitHub Выпуск:

Manual Compose deployment · 3
mkdir sublane && cd sublane
curl -fsSL https://github.com/murongg/SubLane/releases/download/v0.1.0-rc.1/docker.compose.yaml -o docker.compose.yaml

В этом каталоге создайте Compose .env файл для сохранения выбранной версии изображения при перезапуске и обновлении:

Manual Compose deployment · 4
SUBLANE_IMAGE=ghcr.io/murongg/sublane:0.1.0-rc.1
SUBLANE_BIND_ADDRESS=127.0.0.1
SUBLANE_PORT=8080
SUBLANE_LOG_LEVEL=info
# Add this when using an HTTPS reverse proxy:
# SUBLANE_PUBLIC_URL=https://sublane.example.com
# In Docker, first identify the proxy source IP as seen inside the container:
# SUBLANE_TRUSTED_PROXIES=<proxy-source-ip>/32

Compose читать .env для интерполяции; автономное приложение Go не загружается .env Неизменный дайджест может быть использован как целое. SUBLANE_IMAGE Ценность вместо бирки.

Manual Compose deployment · 5
docker compose -f docker.compose.yaml pull
docker compose -f docker.compose.yaml up -d
docker compose -f docker.compose.yaml ps
docker compose -f docker.compose.yaml logs --tail=100 sublane

Открыть http://127.0.0.1:8080 и полную настройку администратора, прежде чем разрешить доступ к члену. Для удаленного хоста используйте туннель SSH для начальной настройки. По умолчанию Compose Картографирование остается на обратной связи; публикация 0.0.0.0 Явный выбор оператора.

Изображение работает как существующее альпийское. sublane сервисный счет, включает сертификаты CA и уведомления о лицензии, а также чеки /readyz. Compose использует только для чтения корневую файловую систему, 64 MiB /tmp tmpfs для SDK царапать файлы, отбрасывать возможности Linux, ограниченные журналы контейнеров и 30-секундный период остановки. Контейнер слушает порт 8080; настраивать порт хоста через SUBLANE_PORTЕсли вы самостоятельно переопределяете внутренний порт прослушивания, также измените проверку состояния здоровья и картографирование портов.

Постоянные данные

Названный sublane-data объемный /data/sublane.dbФайлы WAL и /data/credentials.keyХраните ключ шифрования в базе данных. Compose Ключи обслуживания / объема сохраняются, поэтому обновления из более ранних сборок источников продолжают использовать тот же объем при запуске из того же самого. Compose Проект.

Держи. Compose Название проекта/каталог согласованы. Изменение его создает другой именованный том и может сделать существующий экземпляр неинициализированным. Не запускайте docker compose -f docker.compose.yaml down -v при обновлении или восстановлении: это удаляет объем данных. Поддерживаются монтировки Bind, но их разрешения на хост должны позволять некорневой учетной записи изображения записывать установленный каталог. Предпочитают названный по умолчанию объем, если владение хост-путьом не является преднамеренным.

Строить из источника

Чтобы построить локально, вместо этого клонируйте хранилище и используйте оверрайд исходного здания:

Build from source · 6
git clone https://github.com/murongg/SubLane.git
cd SubLane
docker compose -f docker.compose.yaml -f docker.compose.build.yaml up --build -d

Используйте оба файла для последующих команд против этого развертывания.

Build from source · 7
VERSION=0.1.0-dev REVISION=$(git rev-parse HEAD) \
  docker compose -f docker.compose.yaml -f docker.compose.build.yaml build

Компиляции Dockerfile Go for TARGETOS/TARGETARCH от нативных этапов сборки, поэтому построение ARM64 на x86-64 не эмулирует компилятор или интерфейсную сборку.Многоплатформенное изображение можно построить с помощью настроенного конструктора Buildx:

Build from source · 8
docker buildx build --platform linux/amd64,linux/arm64 \
  --build-arg VERSION=0.1.0-dev --output type=oci,dest=dist/sublane.oci.tar .

создавать dist Во-первых, обычная локальная сборка/загрузка обычно нацелена на одну платформу. Docker? межкомпиляционное руководство.

Автономный Linux бинарный

Загрузите архив, соответствующий вашей машине и SHA256SUMS из того же выпуска:

  • sublane_VERSION_linux_amd64.tar.gzx86-64.
  • sublane_VERSION_linux_arm64.tar.gzAArch64.

В Linux проверьте загруженные файлы, извлеките архив в новую версию каталога и запустите:

Standalone Linux binary · 9
sha256sum --check --ignore-missing SHA256SUMS
./sublane --version
SUBLANE_ADDR=127.0.0.1:8080 SUBLANE_DATA_DIR=/srv/sublane/data ./sublane

Архив содержит исполняемые, AGPL и сторонние лицензионные тексты, Compose Файл, пример среды и документация развертывания/резервного копирования. Сохранить каталог данных за пределами редактируемого исполняемого каталога, сделать его приватным и написанным пользователем сервиса и использовать контроллер процесса для постоянной работы. Руководимый установщик может выполнить эту настройку с помощью системного сервиса пользователя. Не запускайте шлюз как root.

Демо-режим

Инсталлятор предлагает нормальный случай или демо только для чтения после выбора времени выполнения. Обычный режим остается по умолчанию. Выбрать демонстрационный режим напрямую:

Install a read-only demo
curl -fsSL https://raw.githubusercontent.com/murongg/SubLane/main/scripts/install.sh | bash -s -- --demo

--demo Работает с обоими --runtime docker и --runtime binaryДобавить --non-interactive использовать дефолты для оставшихся вариантов. - пишет установщик SUBLANE_DEMO=true то .env для Compose или sublane.env для бинарного сервиса, и отображает публичный демо логин после установки. SUBLANE_DEMO не переопределяет выбранный установщиком режим.

Демо-поддержка должна присутствовать в проверенной конфигурации выбранного релиза.Установщик отклоняет более старые релизы перед вытягиванием/запуском контейнеров или включением службы; --version выбрать релиз, который включает демонстрационную поддержку. Он не возвращается к обычному экземпляру.

В сборке, содержащей демонстрационную поддержку, начните демонстрацию только для чтения с:

Start a disposable demo
SUBLANE_DEMO=true ./sublane

Откройте обычный адрес сервера и выберите Исследуйте демоили войти в систему с именем пользователя demo и пароль sublane-demoПриложение показывает четко обозначенные образцы подписных счетов, пулов, участников, API Ключевые метаданные, история запросов и 30 дней использования. Навигация, фильтры, язык и предпочтения темы работают нормально. Формы можно проверить, но пишет, раскрытие учетных данных, OAuthРезервное копирование и все вызовы шлюза (включая WebSocket) заблокированы; вход и выход из системы остаются доступными.

Каждый старт создает новую частную временную базу данных и ключ шифрования. Демо-режим не открывается SUBLANE_DATA_DIR, ценовые кэши или реальные учетные данные и не связывается с поставщиками или службами релиза / ценообразования. Благоприятное отключение удаляет временные файлы; внезапное убийство может оставить после себя sublane-demo-* каталог во временном каталоге операционной системы. Перезапуск воссоздает примеры с недавними датами. Остановить демонстрационное и отключённое SUBLANE_DEMO Возобновить нормальную установку.

Для развития, использования SUBLANE_DEMO=true make devС этой версией Compose файл, набор SUBLANE_DEMO=true в .env Существующие опубликованные версии без демо-поддержки должны быть сначала обновлены или перестроены. Обычный адрес прослушивания, внешний источник и настройки доверенного прокси по-прежнему применяются.

Конфигурация Runtime

Автономная служба считывает эти переменные среды процесса; .env.example Приведены примеры. Не загружается .env Файл автоматически. Compose читать .env для собственной интерполяции и передает конфигурированную среду в контейнер.

переменныйАвтономный дефолтЦель
SUBLANE_ADDR127.0.0.1:8080HTTP Прослушивающий адрес
SUBLANE_DATA_DIR./dataSQLite База данных и каталог ключей шифрования
SUBLANE_CREDENTIALS_KEY_FILE—Необязательный закрытый файл ключа вне каталога данных; без настройки сохраняется прежний путь
SUBLANE_DEMOfalsetrue запускает изолированную, одноразовую демо-версию только для чтения; принимает только true или false
SUBLANE_LOG_LEVELinfodebug, info, warn или error
SUBLANE_MAX_REQUEST_BODY_MB128Типовой запрос и реконструкция WebSocket контекстный предел в MiB; положительное целое число
SUBLANE_GATEWAY_CAPACITY128Операции в рабочем пространстве
SUBLANE_GATEWAY_QUEUE_LIMIT100Официанты в группе
SUBLANE_GATEWAY_QUEUE_TIMEOUT30sВместимость ждать
SUBLANE_GATEWAY_REQUEST_TIMEOUT30mОбщий срок запроса/поворота
SUBLANE_GATEWAY_STREAM_IDLE_TIMEOUT0sUpstream idle deadline; 0s отключены
SUBLANE_GATEWAY_KEEPALIVE_INTERVAL10sSSE Комментировать Heartbeat; 0s Disables
SUBLANE_GATEWAY_RETRIES2Повторение перед успешным ответом
SUBLANE_GATEWAY_RETRY_DELAY500msПервоначальная задержка повторного запуска
SUBLANE_GATEWAY_TRANSIENT_THRESHOLD3Порог отказа модели; 0 отключений
SUBLANE_GATEWAY_TRANSIENT_WINDOW2mОконный счетчик отказов модели
SUBLANE_GATEWAY_TRANSIENT_COOLDOWN10sПервоначальная модель охлаждения
SUBLANE_GATEWAY_RATE_LIMIT_COOLDOWN5sПропавший Retry-After Fallback
SUBLANE_INFERENCE_HEADER_TIMEOUT5mПодождите заголовк ответа вывода; 0s отключается; время ожидания метаданных остается отдельным
SUBLANE_PUBLIC_URLотключеноточное внешнее происхождение; HTTPS Обеспечивает безопасные сеансовые куки
SUBLANE_TRUSTED_PROXIESотключеноCIDR с раздельной запятой, доверенные для поставки обратных прокси X-Forwarded-For Пределы аутентификации

The Docker Изображение перекрывает адрес прослушивания 0.0.0.0:8080 и каталоги данных для /data. SUBLANE_IMAGE, SUBLANE_BIND_ADDRESS и SUBLANE_PORT конфигурировать Compose Только. SQLite инициализирует консолидированную схему на новой базе данных и использует одно соединение с базой данных.

При запуске новые базы инициализируются, а к поддерживаемым существующим базам по порядку применяются недостающие миграции. Ранняя несовместимая структура с 001_settings.sql отклоняется; сохраните её каталог и используйте новый. Перед обновлением экспортируйте и проверьте резервную копию. Одна лишь смена образа не откатывает мигрированные данные.

SUBLANE_MAX_REQUEST_BODY_MB относится к шлюзу HTTP просьбы, WebSocket Реконструированный контекст разговора. Responses и потоковые события сохраняют свои отдельные ограничения 8 МБ. Перезагрузите автономный сервис или воссоздайте контейнер после изменения предела запроса и выровняйте любые ограничения обратного прокси-сервера с новым значением.

Если вы переопределяете SUBLANE_PRICING_URLТакже установлен SUBLANE_PRICING_HASH_URL Для проверки целостности документа включен соответствующий файл SHA-256. URL-адрес с пользовательской ценой без хеш-адреса извлекается и анализируется, но не проверяется хеш-кодом.

Изменения во времени выполнения шлюза требуют перезапуска или рекреации контейнера. Compose файл передает эти переменные. Обновления, управляемые сценарием, сохраняют существующие Compose файлы; добавьте новые записи среды к более старым сохраненным файлам; Compose Файл перед тем, как положиться на .env Параметры параллелизма счета/члена сохраняются отдельно.

HTTPS обратный прокси

Настройка SUBLANE_PUBLIC_URL Внешнее происхождение, такое как https://sublane.example.com, и воссоздать услугу, чтобы изменения среды вступили в силу. Это требуется за обратным прокси, потому что обратный результат получает происхождение из заголовка хоста запроса. Настроенное происхождение используется для проверки запроса браузера и безопасных файлов cookie сеанса. Передайте исходный заголовк хоста и сохраните потоковую передачу и WebSocket модернизация.

Настройка SUBLANE_TRUSTED_PROXIES на адреса CIDR ваших собственных прокси-хопов. SubLane двоичный доступ к IPv4 loopback, использование 127.0.0.1/32 (добавить) ::1/128 Для IPv6 loopback. Docker Контейнер может видеть прокси-сервер хоста в качестве адреса моста, а не обратной связи; установщик оставляет это значение пустым. Docker Режим, если вы не пройдете --trusted-proxies с адресом SubLane Для прокси-контейнера используйте его фиксированный адрес или выделенную закрытую подсеть. SubLane игнорировать X-Forwarded-For Если прямой пир не соответствует этому списку, то использует самый правильный ненадежный IP в цепочке для ограничений входа. SubLane Если он настроен, то все пользователи, стоящие за одним прокси, разделяют его логин.

Для прокси-сервера Caddy, работающего на одном хосте:

Caddyfile
sublane.example.com {
    reverse_proxy 127.0.0.1:8080
}

Кэдди работает с TLS и WebSocket модернизация и смыв SSE автоматические ответы. Сохраняйте поведение по умолчанию, чтобы отключение клиента могло отменить работу вверх по течению; отрицательное flush_interval Изменения в поведении отмены. Caddy Reverse Прокси-ссылкаЕсли прокси-сервер является другим контейнером, используйте Compose название службы sublane:8080 в общей сети; 127.0.0.1 Внутри прокси-контейнера имеется в виду сам контейнер.

Для существующей установки Nginx поместите карту в http использовать эти места внутри своего HTTPS Блок сервера:

HTTPS reverse proxy · 11
map $http_upgrade $sublane_connection {
    default upgrade;
    ''      close;
}

location / {
    proxy_pass http://127.0.0.1:8080;
    proxy_http_version 1.1;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $sublane_connection;
    proxy_buffering off;
    proxy_read_timeout 650s;
    proxy_send_timeout 650s;
    client_max_body_size 128m;
}

# Web backup uploads/downloads can be larger and last up to 15 minutes.
location /api/settings/backup/ {
    proxy_pass http://127.0.0.1:8080;
    proxy_http_version 1.1;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_request_buffering off;
    proxy_buffering off;
    proxy_read_timeout 950s;
    proxy_send_timeout 950s;
    client_max_body_size 256m;
}

Конфигурировать HTTPS Сертификат на родительском сервере Nginx. Nginx WebSocket руководство Пределы также должны разрешать размер запроса / резервного копирования на любом другом прокси-слое. Собственная авторизация шлюза и пределы тела остаются в силе.

модернизировать

  1. Просмотрите заметки к выпуску и запишите текущую версию изображения / дигест.

  2. Экспорт последовательного резервного копирования и копирование его из объема данных:

    Upgrade · 12
    docker compose -f docker.compose.yaml exec sublane sh -c 'mkdir -p /data/backups'
    docker compose -f docker.compose.yaml exec sublane sublane backup --output /data/backups/pre-upgrade.sublane-backup.tar.gz
    docker compose -f docker.compose.yaml exec sublane sublane backup verify --input /data/backups/pre-upgrade.sublane-backup.tar.gz
    docker compose -f docker.compose.yaml cp sublane:/data/backups/pre-upgrade.sublane-backup.tar.gz ./pre-upgrade.sublane-backup.tar.gz
    chmod 600 ./pre-upgrade.sublane-backup.tar.gz

    Используйте новое имя файла для каждого обновления; существующие резервные копии никогда не перезаписываются. Архив включает в себя ключ шифрования и находится в частном хранилище.

  3. Изменения SUBLANE_IMAGE в .env В выбранную версию, затем вытащите и воссоздайте:

    Upgrade · 13
    docker compose -f docker.compose.yaml pull
    docker compose -f docker.compose.yaml up -d
    docker compose -f docker.compose.yaml ps
    docker compose -f docker.compose.yaml logs --tail=100 sublane
  4. Подтвердите здоровье, вход в систему, ожидаемые учетные записи / пулы / ключи и один явно авторизованный клиентский звонок. SQLite Схема при запуске. Изображение здоровья проверяет готовность процесса/базы данных, а не реальное разрешение поставщика.

Восстановление и откат

Изменение тега изображения само по себе не является откатом базы данных. Если релиз мигрировал схему, восстановите архив предварительного обновления в новый каталог с предполагаемым старым двоичным / изображением, затем остановите текущую службу и переключитесь на этот восстановленный каталог. Сохраните первоначальный объем до завершения проверки. Никогда не позволяйте двум процессам делиться одним и тем же. SQLite Директория.

The Руководство по резервному копированию охватывает подготовку к CLI и веб-реставрации и Compose переопределить для /data/restore-ready.Продолжить использование оверрайда восстановления на более поздних стартах, пока этот каталог активен. Резервное копирование из более новой схемы не может быть открыто более старым выпуском, который не распознает его.

Проверка контейнеров

С помощью Docker Двигатель работает:

Container verification · 12
docker compose -f docker.compose.yaml config --quiet
docker compose -f docker.compose.yaml -f docker.compose.build.yaml config --quiet
docker buildx build --load --build-arg VERSION=0.0.0-test -t sublane:smoke .
bash scripts/container-smoke.sh sublane:smoke 0.0.0-test

Сценарий дыма создает свой собственный одноразовый именованный объем и контейнер с отключенными сетями. Он проверяет здоровье, версию, выполнение без корня, пути выполнения только для чтения, настройку с синтетическими учетными данными, ключевыми разрешениями, резервное копирование / проверка / восстановление и сохранение после перезагрузки. Он удаляет только эти временные ресурсы. Он не связывается с поставщиками восходящего потока или не использует существующие данные экземпляра. CI выполняет те же проверки на родных бегунах amd64 и arm64.