# =================================================================
# DChat 2.0 Docker Image
# =================================================================
# Build:   docker build -t dchat .
# Run:     docker run -d -p 5000:5000 -e ConnectionStrings__DChat="Server=host.docker.internal;Database=ZChat;User Id=sa;Password=YOUR_PASSWORD;TrustServerCertificate=true" dchat
# =================================================================

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
EXPOSE 5000

# curl is used by the container HEALTHCHECK below.
RUN apt-get update \
    && apt-get install -y --no-install-recommends curl \
    && rm -rf /var/lib/apt/lists/*

# Copy published output
COPY Web/ ./

# Set default environment. JSON console logging so orchestrator/collector log
# pipelines (Docker, Kubernetes, Loki, CloudWatch) ingest structured events.
ENV ASPNETCORE_URLS=http://+:5000
ENV ASPNETCORE_ENVIRONMENT=Production
ENV Logging__ConsoleFormat=json

# Orchestrators (not just docker-compose) can see container liveness.
HEALTHCHECK --interval=30s --timeout=5s --start-period=40s --retries=5 \
    CMD curl -fsS http://localhost:5000/health/live || exit 1

ENTRYPOINT ["dotnet", "DChat.Web.dll"]
