unkey Docker & Self-Hosted Deployment

GitHub

The Developer Platform for Modern APIs

1. Pull Image (DOCKERHUB) docker pull unkeyed/unkey:latest
2. Docker Run (1-Click Launch) docker run -d --name unkey --restart always unkeyed/unkey:latest
3. Podman Run podman run -d --name unkey --restart always unkeyed/unkey:latest
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://docker.io/unkeyed/unkey:latest
5. ORAS Pull (OCI Artifact) oras pull unkeyed/unkey:latest
Dockerfile
# syntax=docker/dockerfile:1.7

FROM ubuntu:24.04@sha256:68ee22004a9109b44973313b02ff7b1de250f1de0f5ecb628d73f579aaff33ac AS builder

RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates curl git \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /src
ENV CGO_ENABLED=0 \
    GOPATH=/go \
    MISE_DATA_DIR=/opt/mise \
    MISE_INSTALL_PATH=/usr/local/bin/mise

COPY dev/install-mise ./dev/install-mise
RUN ./dev/install-mise
COPY .mise/config.toml .mise/mise.lock ./.mise/
RUN mise trust .mise/config.toml && mise install --locked --yes go

COPY go.mod go.sum ./
RUN --mount=type=cache,id=unkey-go-mod,target=/go/pkg/mod \
    mise exec -- go mod download
COPY . .

RUN --mount=type=cache,id=unkey-go-mod,target=/go/pkg/mod \
    --mount=type=cache,id=unkey-go-build,target=/root/.cache/go-build \
    mise exec -- go build -o /out/unkey ./build/cli

FROM gcr.io/distroless/static-debian13:nonroot@sha256:516757106de35205efb70b91ba03f6f1298424a0678c603255cf2852a7000087

COPY --from=builder /out/unkey /unkey
LABEL org.opencontainers.image.source=https://github.com/unkeyed/unkey
ENTRYPOINT ["/unkey"]