40 lines
668 B
Text
40 lines
668 B
Text
|
FROM golang:1.23-alpine AS builder
|
||
|
|
||
|
WORKDIR /app
|
||
|
COPY . .
|
||
|
|
||
|
# Build loadr
|
||
|
RUN go build -o loadr
|
||
|
|
||
|
# Create and build the server using a shell script
|
||
|
RUN <<EOF cat > server.go
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"log"
|
||
|
"net/http"
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
||
|
w.Write([]byte("Loadr is ready"))
|
||
|
})
|
||
|
|
||
|
log.Printf("Server starting on :8080")
|
||
|
if err := http.ListenAndServe(":8080", nil); err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
}
|
||
|
EOF
|
||
|
|
||
|
RUN go build -o server server.go
|
||
|
|
||
|
FROM alpine:latest
|
||
|
|
||
|
WORKDIR /app
|
||
|
COPY --from=builder /app/loadr .
|
||
|
COPY --from=builder /app/server .
|
||
|
|
||
|
EXPOSE 8080
|
||
|
|
||
|
CMD ["/app/server"]
|