# USMT Dash - demo container
#
# Runs the real USMT-Server.ps1 and USMT-Worker.ps1 under PowerShell 7 with -Demo, so the
# worker sweeps a simulated fleet instead of SCCM/AD/SMB. The web API is read-only in demo
# mode; visitor changes are simulated in each visitor's browser.
#
#   docker build -t usmt-dash .
#   docker run -p 8080:8080 usmt-dash
FROM mcr.microsoft.com/powershell:lts-ubuntu-22.04

ENV USMT_MODE=Demo \
    POWERSHELL_TELEMETRY_OPTOUT=1 \
    POWERSHELL_UPDATECHECK=Off \
    DOTNET_CLI_TELEMETRY_OPTOUT=1 \
    TZ=UTC

WORKDIR /app
COPY . /app

RUN apt-get update \
 && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends tzdata \
 && rm -rf /var/lib/apt/lists/* \
 && useradd --system --home /app --shell /usr/sbin/nologin usmt \
 && mkdir -p /app/Data \
 && chown -R usmt:usmt /app/Data \
 && chmod +x /app/docker/start.sh

USER usmt
EXPOSE 8080

HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
  CMD pwsh -NoProfile -Command "try { if ((Invoke-WebRequest -UseBasicParsing http://127.0.0.1:8080/get-config -TimeoutSec 5).StatusCode -eq 200) { exit 0 } } catch {}; exit 1"

ENTRYPOINT ["/app/docker/start.sh"]
