2025-11-08 20:21:57 +00:00
|
|
|
# syntax=docker/dockerfile:1.7
|
2026-04-07 17:16:02 +02:00
|
|
|
# Build Solstice Orchestrator
|
2026-04-07 15:57:10 +02:00
|
|
|
# Uses vm-manager (direct QEMU) instead of libvirt — only needs /dev/kvm at runtime
|
2026-04-07 17:16:02 +02:00
|
|
|
|
|
|
|
|
FROM docker.io/library/rust:bookworm AS builder
|
|
|
|
|
ENV CARGO_HOME=/cargo
|
|
|
|
|
WORKDIR /work
|
|
|
|
|
# Install build dependencies: protoc, DB headers, pkg-config
|
|
|
|
|
RUN apt-get update \
|
|
|
|
|
&& apt-get install -y --no-install-recommends \
|
|
|
|
|
protobuf-compiler libprotobuf-dev pkg-config libsqlite3-dev libpq-dev ca-certificates \
|
|
|
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
|
# Configure cargo target-dir so it can be cached between layers
|
|
|
|
|
RUN mkdir -p /cargo && printf "[build]\ntarget-dir = \"/cargo/target\"\n" > /cargo/config.toml
|
|
|
|
|
# Copy source
|
|
|
|
|
COPY Cargo.toml Cargo.lock ./
|
|
|
|
|
COPY crates ./crates
|
|
|
|
|
# Build orchestrator (vm-manager fetched as git dep from GitHub)
|
|
|
|
|
RUN --mount=type=cache,target=/cargo/registry,sharing=locked \
|
|
|
|
|
--mount=type=cache,target=/cargo/git,sharing=locked \
|
|
|
|
|
--mount=type=cache,target=/cargo/target,sharing=locked \
|
|
|
|
|
cargo build --release -p orchestrator \
|
|
|
|
|
&& cp /cargo/target/release/orchestrator /orchestrator
|
2025-11-08 20:21:57 +00:00
|
|
|
|
2026-04-07 16:50:55 +02:00
|
|
|
FROM docker.io/library/ubuntu:24.04
|
2026-04-07 15:57:10 +02:00
|
|
|
# Runtime: QEMU for VMs, qemu-utils for qemu-img, DB client libs
|
2025-11-08 20:21:57 +00:00
|
|
|
RUN apt-get update \
|
2025-11-09 17:58:36 +01:00
|
|
|
&& apt-get install -y --no-install-recommends \
|
|
|
|
|
libsqlite3-0 libpq5 ca-certificates \
|
2026-04-07 21:01:57 +02:00
|
|
|
qemu-system-x86 qemu-utils genisoimage \
|
2025-11-08 20:21:57 +00:00
|
|
|
&& rm -rf /var/lib/apt/lists/*
|
2026-04-07 17:16:02 +02:00
|
|
|
COPY --from=builder /orchestrator /usr/local/bin/solstice-orchestrator
|
2026-04-07 15:57:10 +02:00
|
|
|
EXPOSE 8081
|
2026-04-07 16:50:55 +02:00
|
|
|
ENTRYPOINT ["/usr/local/bin/solstice-orchestrator"]
|