28 lines
1017 B
Docker
28 lines
1017 B
Docker
FROM node:22.19.0-alpine AS frontend
|
|
WORKDIR /src/web
|
|
COPY web/package*.json ./
|
|
RUN npm ci --no-audit --no-fund
|
|
COPY web/ ./
|
|
RUN npm run build
|
|
|
|
FROM golang:1.25.0-alpine AS backend
|
|
WORKDIR /src
|
|
COPY go.mod go.sum ./
|
|
RUN go mod download
|
|
COPY . .
|
|
COPY --from=frontend /src/web/dist ./web/dist
|
|
ARG VERSION
|
|
ARG COMMIT=unknown
|
|
ARG BUILD_TIME
|
|
RUN version="${VERSION:-$(cat VERSION)}" && build_time="${BUILD_TIME:-$(date -u '+%Y-%m-%dT%H:%M:%SZ')}" && \
|
|
CGO_ENABLED=0 go build -trimpath -ldflags "-s -w -X linkport/internal/buildinfo.Version=$version -X linkport/internal/buildinfo.Commit=$COMMIT -X linkport/internal/buildinfo.BuildTime=$build_time" -o /linkport ./cmd/linkport
|
|
|
|
FROM alpine:3.22.1
|
|
RUN apk add --no-cache ca-certificates && adduser -D -u 10001 linkport && mkdir /data && chown linkport /data
|
|
USER linkport
|
|
WORKDIR /app
|
|
COPY --from=backend /linkport /app/linkport
|
|
ENV LINKPORT_HTTP_ADDR=0.0.0.0:8080 LINKPORT_DATA=/data/linkport.sqlite LINKPORT_AUTH_ENABLED=true
|
|
EXPOSE 8080
|
|
ENTRYPOINT ["/app/linkport"]
|