diff --git a/.gitignore b/.gitignore index 4257127..f447a8d 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,5 @@ .env.local ordr-api + +./nohup.out \ No newline at end of file diff --git a/api/Dockerfile b/api/Dockerfile new file mode 100644 index 0000000..56d3b2c --- /dev/null +++ b/api/Dockerfile @@ -0,0 +1,31 @@ +# Stage 1: Build the application +FROM golang:1.25.3-alpine AS builder + +WORKDIR /app + +# Copy go.mod and go.sum first to leverage Docker's caching +COPY go.mod go.sum ./ +RUN go mod download + +# Copy the rest of the application source code +COPY . . + +# Build the Go application +# CGO_ENABLED=0 disables Cgo for a fully static binary +# -a links all packages statically +# -installsuffix cgo_non_shared avoids issues with shared libraries +RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo_non_shared -o main . + +# Stage 2: Create the final lean image +FROM alpine:latest + +WORKDIR /root/ + +# Copy the built binary from the builder stage +COPY --from=builder /app/main . + +# Expose the port your Gin application listens on (e.g., 8080) +EXPOSE 8080 + +# Command to run the application +CMD ["./ordr-api"] \ No newline at end of file