45 lines
1.5 KiB
Docker
45 lines
1.5 KiB
Docker
# syntax=docker/dockerfile:1
|
|
# wikicommons-feeder sidecar. Multi-stage build; build context is this repo's root.
|
|
# meta-feeder-sdk arrives as a git dependency, so no vendored crate is copied
|
|
# in — `git` must be present in the builder for cargo to fetch it.
|
|
|
|
FROM rust:1.89-slim-bookworm AS builder
|
|
WORKDIR /build
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
pkg-config libssl-dev ca-certificates git \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY Cargo.toml rust-toolchain.toml ./
|
|
COPY feeder-plugin/ feeder-plugin/
|
|
|
|
RUN --mount=type=cache,id=cargo-registry,target=/usr/local/cargo/registry \
|
|
--mount=type=cache,id=cargo-git,target=/usr/local/cargo/git \
|
|
--mount=type=cache,id=wikicommons-feeder-target,target=/build/target \
|
|
cargo build --release --bin wikicommons-feeder \
|
|
&& cp target/release/wikicommons-feeder /wikicommons-feeder
|
|
|
|
# -----------------------------------------------------------------------------
|
|
FROM debian:bookworm-slim AS runtime
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
ca-certificates curl \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY --from=builder /wikicommons-feeder /usr/local/bin/wikicommons-feeder
|
|
|
|
RUN useradd --system --uid 10001 --no-create-home metafeeder \
|
|
&& mkdir -p /data/meta-feeder \
|
|
&& chown metafeeder:metafeeder /data/meta-feeder
|
|
|
|
USER metafeeder
|
|
WORKDIR /data/meta-feeder
|
|
|
|
EXPOSE 8080
|
|
|
|
ENV META_FEEDER_HTTP_LISTEN=0.0.0.0:8080 \
|
|
META_FEEDER_STATE_DIR=/data/meta-feeder \
|
|
RUST_LOG=info
|
|
|
|
ENTRYPOINT ["/usr/local/bin/wikicommons-feeder"]
|