sidecar-start.sh

Обзор

Данный shell-скрипт предназначен для подготовки и запуска приложения relay_sidecar. Он выполняет следующие ключевые задачи:

Скрипт используется в контейнеризированных средах, где требуется динамическая настройка сервиса на основе внешних данных.


Подробное описание содержимого файла

Установка зависимости

apk add --no-cache jq

Ожидание файла relay_contracts.json

echo "Waiting for relay_contracts.json file..."
until [ -f /deploy-data/relay_contracts.json ]; do sleep 2; done

Извлечение адреса драйвера из JSON

DRIVER_ADDRESS=$(jq -r '.driver.addr' /deploy-data/relay_contracts.json)
echo "Driver address from relay_contracts.json: $DRIVER_ADDRESS"

Генерация конфигурационного файла sidecar.yaml

cat > /tmp/sidecar.yaml << EOFCONFIG
driver:
  chain-id: 31337
  address: "$DRIVER_ADDRESS"
log-level: "debug"
log-mode: "pretty"
signer: true
chains:
  - "http://anvil:8545"
  - "http://anvil-settlement:8546"
bootnodes:
  - /dns4/relay-sidecar-1/tcp/8880/p2p/16Uiu2HAmFUiPYAJ7bE88Q8d7Kznrw5ifrje2e5QFyt7uFPk2G3iR 
http-listen: ":8080"
p2p-listen: "/ip4/0.0.0.0/tcp/8880"
enable-mdns: true
EOFCONFIG

Запуск приложения relay_sidecar

exec /app/relay_sidecar --config /tmp/sidecar.yaml --secret-keys "$1" --storage-dir "$2" $3

Важные детали реализации


Взаимодействие с другими частями системы


Пример использования

./sidecar-start.sh /path/to/keys.json /var/lib/sidecar/data --verbose

Mermaid диаграмма

flowchart TD
    A[Start] --> B[Install jq]
    B --> C[Wait for /deploy-data/relay_contracts.json]
    C --> D[Parse DRIVER_ADDRESS from JSON]
    D --> E[Generate /tmp/sidecar.yaml]
    E --> F[Execute relay_sidecar with args]

Диаграмма отражает последовательность действий в скрипте от запуска до старта приложения.


Итог

Файл sidecar-start.sh — это утилитарный скрипт для подготовки и запуска сервиса relay_sidecar. Он обеспечивает динамическую настройку на основе внешних данных, что важно для гибких и масштабируемых систем, работающих с блокчейн-средами и P2P-сетями.