Развертывание и модернизация
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 Отключает все подсказки.
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, и не строится из источника.
Чтобы выбрать опубликованную версию, новый каталог и порт хоста без подсказок:
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 и устроить затяжку, если требуется без присмотра эксплуатация. Новые установки отказываются от существующих каталогов и симлинков. Существующая установка, управляемая скриптом, может быть обновлена тем же скриптом, что описано ниже. Если запуск не удается, конфигурация и любые созданные данные сохраняются для проверки.
Обновление скрипт-управляемой установки
Первый экспортировать и проверять резервную копию базы данных, и читать заметки о целевом выпуске. Запустить сценарий из родительского каталога установки. В терминале существующая целевая программа предлагает Обновить существующий экземпляр и запрашивает подтверждение перед развертыванием. Выбрать обновление в явном виде:
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 Выпуск:
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 файл для сохранения выбранной версии изображения при перезапуске и обновлении:
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>/32Compose читать .env для интерполяции; автономное приложение Go не загружается .env Неизменный дайджест может быть использован как целое. SUBLANE_IMAGE Ценность вместо бирки.
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, но их разрешения на хост должны позволять некорневой учетной записи изображения записывать установленный каталог. Предпочитают названный по умолчанию объем, если владение хост-путьом не является преднамеренным.
Строить из источника
Чтобы построить локально, вместо этого клонируйте хранилище и используйте оверрайд исходного здания:
git clone https://github.com/murongg/SubLane.git
cd SubLane
docker compose -f docker.compose.yaml -f docker.compose.build.yaml up --build -dИспользуйте оба файла для последующих команд против этого развертывания.
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:
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 проверьте загруженные файлы, извлеките архив в новую версию каталога и запустите:
sha256sum --check --ignore-missing SHA256SUMS
./sublane --version
SUBLANE_ADDR=127.0.0.1:8080 SUBLANE_DATA_DIR=/srv/sublane/data ./sublaneАрхив содержит исполняемые, AGPL и сторонние лицензионные тексты, Compose Файл, пример среды и документация развертывания/резервного копирования. Сохранить каталог данных за пределами редактируемого исполняемого каталога, сделать его приватным и написанным пользователем сервиса и использовать контроллер процесса для постоянной работы. Руководимый установщик может выполнить эту настройку с помощью системного сервиса пользователя. Не запускайте шлюз как root.
Демо-режим
Инсталлятор предлагает нормальный случай или демо только для чтения после выбора времени выполнения. Обычный режим остается по умолчанию. Выбрать демонстрационный режим напрямую:
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 выбрать релиз, который включает демонстрационную поддержку. Он не возвращается к обычному экземпляру.
В сборке, содержащей демонстрационную поддержку, начните демонстрацию только для чтения с:
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_ADDR | 127.0.0.1:8080 | HTTP Прослушивающий адрес |
SUBLANE_DATA_DIR | ./data | SQLite База данных и каталог ключей шифрования |
SUBLANE_CREDENTIALS_KEY_FILE | — | Необязательный закрытый файл ключа вне каталога данных; без настройки сохраняется прежний путь |
SUBLANE_DEMO | false | true запускает изолированную, одноразовую демо-версию только для чтения; принимает только true или false |
SUBLANE_LOG_LEVEL | info | debug, info, warn или error |
SUBLANE_MAX_REQUEST_BODY_MB | 128 | Типовой запрос и реконструкция WebSocket контекстный предел в MiB; положительное целое число |
SUBLANE_GATEWAY_CAPACITY | 128 | Операции в рабочем пространстве |
SUBLANE_GATEWAY_QUEUE_LIMIT | 100 | Официанты в группе |
SUBLANE_GATEWAY_QUEUE_TIMEOUT | 30s | Вместимость ждать |
SUBLANE_GATEWAY_REQUEST_TIMEOUT | 30m | Общий срок запроса/поворота |
SUBLANE_GATEWAY_STREAM_IDLE_TIMEOUT | 0s | Upstream idle deadline; 0s отключены |
SUBLANE_GATEWAY_KEEPALIVE_INTERVAL | 10s | SSE Комментировать Heartbeat; 0s Disables |
SUBLANE_GATEWAY_RETRIES | 2 | Повторение перед успешным ответом |
SUBLANE_GATEWAY_RETRY_DELAY | 500ms | Первоначальная задержка повторного запуска |
SUBLANE_GATEWAY_TRANSIENT_THRESHOLD | 3 | Порог отказа модели; 0 отключений |
SUBLANE_GATEWAY_TRANSIENT_WINDOW | 2m | Оконный счетчик отказов модели |
SUBLANE_GATEWAY_TRANSIENT_COOLDOWN | 10s | Первоначальная модель охлаждения |
SUBLANE_GATEWAY_RATE_LIMIT_COOLDOWN | 5s | Пропавший Retry-After Fallback |
SUBLANE_INFERENCE_HEADER_TIMEOUT | 5m | Подождите заголовк ответа вывода; 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, работающего на одном хосте:
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 Блок сервера:
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 руководство Пределы также должны разрешать размер запроса / резервного копирования на любом другом прокси-слое. Собственная авторизация шлюза и пределы тела остаются в силе.
модернизировать
-
Просмотрите заметки к выпуску и запишите текущую версию изображения / дигест.
-
Экспорт последовательного резервного копирования и копирование его из объема данных:
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Используйте новое имя файла для каждого обновления; существующие резервные копии никогда не перезаписываются. Архив включает в себя ключ шифрования и находится в частном хранилище.
-
Изменения
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 -
Подтвердите здоровье, вход в систему, ожидаемые учетные записи / пулы / ключи и один явно авторизованный клиентский звонок. SQLite Схема при запуске. Изображение здоровья проверяет готовность процесса/базы данных, а не реальное разрешение поставщика.
Восстановление и откат
Изменение тега изображения само по себе не является откатом базы данных. Если релиз мигрировал схему, восстановите архив предварительного обновления в новый каталог с предполагаемым старым двоичным / изображением, затем остановите текущую службу и переключитесь на этот восстановленный каталог. Сохраните первоначальный объем до завершения проверки. Никогда не позволяйте двум процессам делиться одним и тем же. SQLite Директория.
The Руководство по резервному копированию охватывает подготовку к CLI и веб-реставрации и Compose переопределить для /data/restore-ready.Продолжить использование оверрайда восстановления на более поздних стартах, пока этот каталог активен. Резервное копирование из более новой схемы не может быть открыто более старым выпуском, который не распознает его.
Проверка контейнеров
С помощью Docker Двигатель работает:
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.