C client SDK for Datatailr licenses — vendored as a COPY --from= source
10K+
Not a runnable image — a vendored artifact. Holds the pure-C client SDK used by every Datatailr product (QE, Wire, Tick, …) to verify and live-fetch licenses.
The image's only purpose is to ship libdtlicense.so + dt_license.h
in a form that other Dockerfiles can COPY --from= without
authenticating to a private GitHub release. Public on Docker Hub so
your local docker build and your CI both Just Work — no PAT, no
secret mount.
/libdtlicense.so ← C shared library, links against -ldtlicense
/dt_license.h ← public C header
/LICENSE.txt ← proprietary licence text
Built multi-arch: linux/amd64 + linux/arm64. Each tag is also
published with a distro-specific variant if you need libc-matched
binaries:
| Tag | libc | Arch |
|---|---|---|
0.1.0 | glibc | amd64+arm64 (default — Debian/Ubuntu/RHEL) |
0.1.0-alpine | musl | amd64+arm64 (Alpine) |
latest | glibc | amd64+arm64 |
latest-alpine | musl | amd64+arm64 |
In your product's Dockerfile, vendor the SDK with a COPY --from:
# Pull the SDK
FROM datatailr/libdtlicense:0.1.0 AS dtlicense
FROM debian:trixie-slim AS builder
COPY --from=dtlicense /libdtlicense.so /opt/datatailr/lib/libdtlicense.so
COPY --from=dtlicense /dt_license.h /usr/local/include/dt_license.h
# Build your product, link against -ldtlicense:
# gcc ... -L/opt/datatailr/lib -ldtlicense ...
For Alpine-based images:
FROM datatailr/libdtlicense:0.1.0-alpine AS dtlicense
FROM alpine:3.23 AS builder
COPY --from=dtlicense /libdtlicense.so /opt/datatailr/lib/libdtlicense.so
COPY --from=dtlicense /dt_license.h /usr/local/include/dt_license.h
The product binary's runtime also needs libdtlicense.so accessible.
Either install it where ldconfig finds it (/usr/local/lib/) or set
LD_LIBRARY_PATH=/opt/datatailr/lib.
The SDK exposes one entry point — see dt_license.h:
int dt_license_require(const char *product, const char *feature,
int argc, char **argv);
int dt_license_has_feature(const char *feature);
const char *dt_license_subject(void);
const char *dt_license_edition(void);
long long dt_license_get_int(const char *feature, long long default_value);
long long dt_license_expires_at(void);
void dt_license_shutdown(void);
dt_license_require() resolves a license through this precedence:
--license-file <path> or $DT_LICENSE_FILE--local-license-server host:port or $DT_LICENSE_LOCAL_SERVER
(enables UDP heartbeat + activation tracking against
datatailr/license-edge)$DT_<PRODUCT>_LICENSE/etc/dt/license.jsoned25519 signature verification, expiry, and feature gate happen identically across all sources. Key-id rotation supported.
datatailr/license-server
(central issuance) ·
datatailr/license-edge
(per-site sidecar)Proprietary — LicenseRef-Datatailr-Proprietary. The shared library
itself is freely re-distributable as part of products that have a
valid Datatailr license; do not redistribute outside that context.
Content type
Image
Digest
sha256:a239c3c24…
Size
30.3 kB
Last updated
4 months ago
docker pull datatailr/libdtlicense