FROM ghcr.io/prantlf/vlang:latest AS builder
WORKDIR ./src/

COPY . .
RUN mkdir -p ./src/../../build/

# Build release binary. Output to /src/bin/cdn_app
# If your main file is main.v in the root of the context, this will work.
RUN v -prod -o ./src/../../build/ ./main.v

# Stage 2: runtime
FROM debian:bookworm-slim AS runtime
WORKDIR /app

# create non-root user (good practice)
RUN useradd -m appuser

# copy binary from builder
COPY --from=builder /src/bin/cdn_app /app/cdn_app

# copy templates/assets if your binary loads embedded files at runtime or expects files on disk
# (If you use V's $embed_file at compile time then templates are already embedded and this is optional)
COPY template/ /app/template/
COPY util/ /app/util/
COPY database/ /app/database/

RUN chown -R appuser:appuser /app
USER appuser

# expose container ports your app might use (adjust if you use different ports)
EXPOSE 8080 6767

ENTRYPOINT ["/app/cdn_app"]
