71 lines
1.9 KiB
Docker
71 lines
1.9 KiB
Docker
# syntax=docker/dockerfile:1
|
|
|
|
FROM oven/bun:1.3.14-debian AS web-builder
|
|
|
|
WORKDIR /build/src/web
|
|
|
|
COPY src/web/package.json src/web/bun.lock ./
|
|
RUN bun install --frozen-lockfile
|
|
|
|
COPY src/web/ ./
|
|
RUN bun run build
|
|
|
|
|
|
FROM rust:1.97.1-trixie AS rust-builder
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
clang \
|
|
cmake \
|
|
libclang-dev \
|
|
pkg-config \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /build
|
|
|
|
COPY Cargo.toml Cargo.lock ./
|
|
COPY src/crawler ./src/crawler
|
|
COPY src/search ./src/search
|
|
|
|
RUN --mount=type=cache,id=dht-cargo-registry,target=/usr/local/cargo/registry,sharing=locked \
|
|
--mount=type=cache,id=dht-cargo-git,target=/usr/local/cargo/git,sharing=locked \
|
|
--mount=type=cache,id=dht-cargo-target,target=/build/target,sharing=locked \
|
|
cargo build --locked --release -p dht-search --bin dht-search \
|
|
&& install -Dm755 target/release/dht-search /out/dht-search
|
|
|
|
|
|
FROM debian:trixie-slim AS runtime
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
libgcc-s1 \
|
|
libstdc++6 \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN groupadd --gid 10001 dht-search \
|
|
&& useradd \
|
|
--uid 10001 \
|
|
--gid 10001 \
|
|
--no-create-home \
|
|
--no-log-init \
|
|
--shell /usr/sbin/nologin \
|
|
dht-search \
|
|
&& install -d -o 10001 -g 10001 \
|
|
/dht-search \
|
|
/dht-search/data \
|
|
/dht-search/web
|
|
|
|
COPY --from=rust-builder /out/dht-search /dht-search/dht-search
|
|
COPY --from=web-builder /build/src/web/dist /dht-search/web
|
|
COPY --chmod=0644 --chown=10001:10001 config.toml /dht-search/config.toml
|
|
|
|
USER 10001:10001
|
|
|
|
EXPOSE 8080/tcp
|
|
EXPOSE 12313/udp
|
|
|
|
STOPSIGNAL SIGTERM
|
|
|
|
ENTRYPOINT ["/dht-search/dht-search"]
|
|
CMD ["--config", "/dht-search/config.toml", "--http-listen", "0.0.0.0:8080", "--web-dir", "/dht-search/web", "--console-logging", "--no-file-logging"]
|