Files
alpine-packages/packaging/alpine/local/greptimedb/Dockerfile
2026-06-08 23:43:29 +02:00

77 lines
1.7 KiB
Docker

# syntax=docker/dockerfile:1.7
ARG ALPINE_VERSION=3.23
ARG RUST_VERSION=1.90.0
FROM alpine:${ALPINE_VERSION} AS builder
ARG GREPTIMEDB_REF=main
ARG RUST_VERSION
RUN apk add --no-cache \
bash \
ca-certificates \
curl \
git \
build-base \
linux-headers \
clang \
lld \
mold \
cmake \
make \
perl \
pkgconf \
protobuf \
protobuf-dev \
zlib-dev \
zlib-static \
zstd-dev \
zstd-static \
openssl-dev \
openssl-libs-static \
binutils \
coreutils
ENV RUSTUP_HOME=/usr/local/rustup
ENV CARGO_HOME=/usr/local/cargo
ENV PATH=/usr/local/cargo/bin:${PATH}
ENV CARGO_BUILD_JOBS=2
ENV LIBRARY_PATH=/usr/lib
RUN curl https://sh.rustup.rs -sSf | sh -s -- \
-y \
--profile minimal \
--default-toolchain ${RUST_VERSION}
WORKDIR /src
RUN git clone https://github.com/GreptimeTeam/greptimedb.git . \
&& git checkout ${GREPTIMEDB_REF}
RUN --mount=type=cache,target=/usr/local/cargo/registry \
--mount=type=cache,target=/usr/local/cargo/git \
cargo build \
--release \
--locked \
--bin greptime \
--features servers/dashboard
RUN mkdir -p /out \
&& cp /src/target/release/greptime /out/greptime.debug \
&& cp /src/target/release/greptime /out/greptime \
&& strip /out/greptime \
&& ls -lh /out \
&& file /out/greptime \
&& ldd /out/greptime || true
FROM scratch AS artifact
COPY --from=builder /out/greptime /greptime
COPY --from=builder /out/greptime.debug /greptime.debug
FROM alpine:${ALPINE_VERSION} AS runtime
RUN apk add --no-cache ca-certificates
COPY --from=builder /out/greptime /usr/local/bin/greptime
ENTRYPOINT ["/usr/local/bin/greptime"]