1# syntax=docker/dockerfile:123FROM golang:1.27.1-bookworm AS build4WORKDIR /src5COPY go.mod go.sum ./6RUN go mod download7COPY . .89ARG TEST_PACKAGES=./...10FROM build AS test11RUN go test -mod=readonly -race ${TEST_PACKAGES}1213ARG BENCH_PACKAGES=./internal/storage ./internal/relay14ARG BENCHTIME=5s15FROM build AS bench16ARG BENCH_PACKAGES17ARG BENCHTIME18RUN go test -mod=readonly -run '^$' -bench . -benchmem -benchtime=${BENCHTIME} ${BENCH_PACKAGES}1920FROM build AS binary21RUN CGO_ENABLED=0 go build -mod=readonly -trimpath -ldflags="-s -w" -o /out/tiny ./cmd/tiny2223FROM debian:bookworm-slim AS runtime24RUN apt-get update \25 && apt-get install --no-install-recommends -y ca-certificates git \26 && rm -rf /var/lib/apt/lists/* \27 && useradd --system --create-home --home-dir /home/relay --uid 10001 relay \28 && mkdir -p /data \29 && chown relay:relay /data30COPY --from=binary /out/tiny /usr/local/bin/tiny31COPY LICENSE THIRD_PARTY_NOTICES tinyclient/signer.js.license tinyclient/nostr-name.js.license /usr/share/doc/tiny/32USER relay33WORKDIR /home/relay34VOLUME ["/data"]35ENV TINY_DATA_DIR=/data36ENTRYPOINT ["/usr/local/bin/tiny"]37CMD ["serve"]