mirror of https://github.com/fiatjaf/nak.git
50 lines
1.1 KiB
Docker
50 lines
1.1 KiB
Docker
# build stage
|
|
FROM golang:1.24-alpine AS builder
|
|
|
|
# install git and ca-certificates (needed for fetching dependencies)
|
|
RUN apk add --no-cache git ca-certificates
|
|
|
|
# set working directory
|
|
WORKDIR /app
|
|
|
|
# copy go mod files first for better caching
|
|
COPY go.mod go.sum ./
|
|
|
|
# download dependencies
|
|
RUN go mod download
|
|
|
|
# copy source code
|
|
COPY . .
|
|
|
|
# build the application
|
|
# use cgo_enabled=0 to create a static binary
|
|
# use -ldflags to strip debug info and reduce binary size
|
|
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-w -s" -o nak .
|
|
|
|
# runtime stage
|
|
FROM alpine:latest
|
|
|
|
# install ca-certificates for https requests (needed for relay connections)
|
|
RUN apk --no-cache add ca-certificates
|
|
|
|
# create a non-root user
|
|
RUN adduser -D -s /bin/sh nakuser
|
|
|
|
# set working directory
|
|
WORKDIR /home/nakuser
|
|
|
|
# copy the binary from builder stage
|
|
COPY --from=builder /app/nak /usr/local/bin/nak
|
|
|
|
# make sure the binary is executable
|
|
RUN chmod +x /usr/local/bin/nak
|
|
|
|
# switch to non-root user
|
|
USER nakuser
|
|
|
|
# set the entrypoint
|
|
ENTRYPOINT ["nak"]
|
|
|
|
# default command (show help)
|
|
CMD ["--help"]
|