77 lines
1.7 KiB
Docker
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"] |