#!/bin/bash set -euo pipefail CONTAINER_NAME="${CONTAINER_NAME:-iotlcm-worker-svr}" IMAGE="${IMAGE:-your-registry/iotlcm/iotlcm-worker-svr:latest}" LOG_DIR="${LOG_DIR:-/data/app/iotlcm-worker-svr/logs}" FULL_SYNC_ARCHIVE_DIR="${FULL_SYNC_ARCHIVE_DIR:-/data/logs/iotlcm-worker-svr/full-sync}" # Must match the Admin service upload mount, otherwise Worker cannot read # Admin-created local OSS files such as async inbound Excel sources. UPLOAD_DIR="${UPLOAD_DIR:-/data/app/iotlcmadmin-web-svc/upload}" mkdir -p "${LOG_DIR}" "${FULL_SYNC_ARCHIVE_DIR}" "${UPLOAD_DIR}" if docker ps -a --format '{{.Names}}' | grep -qx "${CONTAINER_NAME}"; then docker stop "${CONTAINER_NAME}" >/dev/null 2>&1 || true docker rm "${CONTAINER_NAME}" >/dev/null fi docker run -d \ --name "${CONTAINER_NAME}" \ --restart unless-stopped \ -v "${LOG_DIR}:/app/logs" \ -v "${FULL_SYNC_ARCHIVE_DIR}:/app/logs/full-sync" \ -v "${UPLOAD_DIR}:/app/upload" \ "${IMAGE}"