From 21f49778391b04ab960ac2ec78178f94ecf164ff171e792d87c8d550191212d9 Mon Sep 17 00:00:00 2001 From: Till Wegmueller Date: Tue, 7 Apr 2026 16:50:55 +0200 Subject: [PATCH] Fix orchestrator container: pre-built binary + Ubuntu 24.04 base Switch to pre-built binary Containerfile to avoid workspace dependency issues with vm-manager path dep. Use Ubuntu 24.04 to match host glibc. --- .cargo/config.toml | 5 ++++ deploy/images/orchestrator/Containerfile | 32 +++++++----------------- 2 files changed, 14 insertions(+), 23 deletions(-) create mode 100644 .cargo/config.toml diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 0000000..256028a --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,5 @@ +# Cargo configuration for Solstice CI +# vm-manager is referenced via path dep in orchestrator's Cargo.toml. +# For local development, ensure the vm-manager repo is available at: +# ../vm-manager (relative to solstice-ci root) +# or create a symlink: ln -s /path/to/vm-manager ../vm-manager diff --git a/deploy/images/orchestrator/Containerfile b/deploy/images/orchestrator/Containerfile index 6ab7289..1e42ddb 100644 --- a/deploy/images/orchestrator/Containerfile +++ b/deploy/images/orchestrator/Containerfile @@ -1,33 +1,19 @@ # syntax=docker/dockerfile:1.7 -# Build Solstice Orchestrator using upstream official images +# Solstice Orchestrator container # Uses vm-manager (direct QEMU) instead of libvirt — only needs /dev/kvm at runtime +# +# Pre-build the binary, then build the container: +# cargo build --release -p orchestrator +# docker build -f deploy/images/orchestrator/Containerfile -t local/solstice-orchestrator:latest . -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 -# Pre-copy manifests for better caching -COPY Cargo.toml ./ -COPY crates ./crates -# Build orchestrator (no libvirt feature needed — uses vm-manager QEMU backend) -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 - -FROM docker.io/library/debian:bookworm-slim +FROM docker.io/library/ubuntu:24.04 # Runtime: QEMU for VMs, qemu-utils for qemu-img, DB client libs RUN apt-get update \ && apt-get install -y --no-install-recommends \ libsqlite3-0 libpq5 ca-certificates \ qemu-system-x86 qemu-utils \ && rm -rf /var/lib/apt/lists/* -COPY --from=builder /orchestrator /usr/local/bin/orchestrator +COPY target/release/orchestrator /usr/local/bin/solstice-orchestrator +RUN chmod +x /usr/local/bin/solstice-orchestrator EXPOSE 8081 -ENTRYPOINT ["/usr/local/bin/orchestrator"] +ENTRYPOINT ["/usr/local/bin/solstice-orchestrator"]