# Stage 1: Builder FROM golang:1.24.6-alpine AS builder WORKDIR /app # Copy go.mod and go.sum first to leverage Docker cache COPY go.mod . COPY go.sum . # Download dependencies RUN go mod download # Copy the rest of the application source code COPY . . # Build the application # CGO_ENABLED=0 is important for static linking, resulting in a smaller image # -o manage-servers specifies the output binary name RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o manage-servers . # Stage 2: Runner FROM alpine:latest WORKDIR /root/ # Copy the compiled binary from the builder stage COPY --from=builder /app/manage-servers . # Copy the index.html file for the web server COPY --from=builder /app/index.html . # Copy the servers.json file COPY servers.json . # Expose the port the web server listens on EXPOSE 8080 # Command to run the application ENTRYPOINT ["./manage-servers", "serve"]