# Build stage
FROM alpine:3.22 AS builder

# Install build dependencies
RUN apk add --no-cache \
    gcc \
    musl-dev \
    make \
    openldap-dev \
    yaml-dev

# Set working directory
WORKDIR /build

# Copy source files
COPY *.c *.h Makefile ./

# Build the application
RUN make deps-alpine && make

# Runtime stage
FROM alpine:3.22
# Install runtime dependencies
RUN apk add --no-cache \
    libldap \
    yaml \
    ca-certificates

# Create app user
RUN addgroup -g 1000 rdpbroker && \
    adduser -D -u 1000 -G rdpbroker rdpbroker

# Create necessary directories
RUN mkdir -p /etc/rdpbroker /var/log/rdpbroker && \
    chown -R rdpbroker:rdpbroker /etc/rdpbroker /var/log/rdpbroker

# Copy binary from builder
COPY --from=builder /build/bin/rdpbroker /usr/local/bin/rdpbroker

# Set permissions
RUN chmod +x /usr/local/bin/rdpbroker

# Switch to non-root user
USER rdpbroker

# Expose RDP port
EXPOSE 3389

# Set entrypoint
ENTRYPOINT ["/usr/local/bin/rdpbroker"]
