# syntax=docker/dockerfile:1
# Build stage: compile the Rust workspace including examples
FROM rust:1.80-slim-bullseye AS builder
WORKDIR /workspace
# Install build dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
ca-certificates \
pkg-config \
libssl-dev \
curl \
&& rm -rf /var/lib/apt/lists/*
# Copy the repository and build all crates, including examples
COPY . .
RUN cargo build --locked --examples
# Runtime stage: run the prebuilt binaries
FROM debian:bookworm-slim
# Minimal runtime dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /workspace
# Copy the server example binary and the workspace sources for serving
COPY --from=builder /workspace/target/debug/examples/server /usr/local/bin/server
COPY --from=builder /workspace /workspace
# Expose the default QUIC server port (4433)
EXPOSE 4433
# Run the server example with the repository mounted at /workspace
CMD ["server", "./"]
- Failing step: [builder 5/5] RUN cargo build --locked --examples
- Exact error message and exit code:
error: failed to parse manifest at `/usr/local/cargo/registry/src/index.crates.io-6f17d22bba15001f/hex-literal-1.1.0/Cargo.toml`
Caused by:
feature `edition2024` is required
The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.80.1 (376290515 2024-07-16)).
Consider trying a newer version of Cargo (this may require the nightly release).
See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature.
Exit code: 101
- Missing packages or files mentioned: None reported as missing. The issue is a Cargo feature/version mismatch.
- Version mismatch / root cause:
- Cargo version: 1.80.1
- Requires edition2024 feature (not stabilized in this Cargo) for hex-literal 1.1.0
- Action: upgrade to a newer Cargo (possibly nightly) or use a Rust image with a Cargo version that supports edition2024
- Summary: The build fails during cargo build --locked --examples due to edition2024 feature not supported by the installed Cargo, causing exit code 101.# syntax=docker/dockerfile:1
# Build stage: compile the Rust workspace including examples
FROM rust:nightly AS builder
WORKDIR /workspace
# Install build dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
ca-certificates \
pkg-config \
libssl-dev \
curl \
&& rm -rf /var/lib/apt/lists/*
# Copy the repository and build all crates, including examples
COPY . .
RUN cargo build --locked --examples
# Runtime stage: run the prebuilt binaries
FROM debian:bookworm-slim
# Minimal runtime dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /workspace
# Copy the server example binary and the workspace sources for serving
COPY --from=builder /workspace/target/debug/examples/server /usr/local/bin/server
COPY --from=builder /workspace /workspace
# Expose the default QUIC server port (4433)
EXPOSE 4433
# Run the server example with the repository mounted at /workspace
WORKDIR /workspace
CMD ["server", "./"]
# syntax=docker/dockerfile:1
# Build stage: compile the Rust workspace including examples
FROM rust:nightly-slim AS builder
WORKDIR /workspace
# Install build dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
ca-certificates \
pkg-config \
libssl-dev \
curl \
&& rm -rf /var/lib/apt/lists/*
# Copy the repository and build all crates, including examples
COPY . .
RUN cargo build --locked --examples
# Runtime stage: run the prebuilt binaries
FROM debian:bookworm-slim
# Minimal runtime dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /workspace
# Copy the server example binary and the workspace sources for serving
COPY --from=builder /workspace/target/debug/examples/server /usr/local/bin/server
COPY --from=builder /workspace /workspace
# Expose the default QUIC server port (4433)
EXPOSE 4433
# Run the server example with the repository mounted at /workspace
WORKDIR /workspace
CMD ["server", "./"]
# syntax=docker/dockerfile:1
# Build stage: compile the Rust workspace including examples
FROM rust:1.80-slim-bullseye AS builder
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
ca-certificates \
pkg-config \
libssl-dev \
curl \
git \
&& rm -rf /var/lib/apt/lists/*
# Install rustup and nightly toolchain to enable edition2024 features during build
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y
ENV PATH=/root/.cargo/bin:${PATH}
RUN rustup toolchain install nightly
# Build workspace with nightly toolchain to support newer Cargo features
WORKDIR /workspace
COPY . .
RUN cargo +nightly build --locked --examples
# Runtime stage: run the prebuilt binaries
FROM debian:bookworm-slim AS runtime
# Minimal runtime dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
openssl \
libssl3 \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /workspace
# Copy the server example binary and the workspace sources for serving
COPY --from=builder /workspace/target/debug/examples/server /usr/local/bin/server
COPY --from=builder /workspace /workspace
# Expose the default QUIC server port (4433)
EXPOSE 4433
# Run the server example
CMD ["server", "./"]
Concerns: The runtime image copies the entire workspace into /workspace, which may bloat the image and potentially leak source code or build artifacts. Consider only copying the prebuilt server binary and minimal assets instead of the full workspace., The CMD uses 'server' with './' as an argument; depending on the server example, this may not be the correct runtime invocation. It would be safer to verify the binary's expected CLI and adjust accordingly (e.g., provide a specific data/config directory or flags)., Building with the nightly toolchain may affect reproducibility. If possible, pin to a specific nightly version or ensure the nightly features are strictly necessary, and consider falling back to a stable toolchain if feasible. Smoke [PASS]: test -x /usr/local/bin/server Smoke [FAIL]: file /usr/local/bin/server Output: sh: 1: file: not found Smoke [PASS]: ldd /usr/local/bin/server | head -n 20
# syntax=docker/dockerfile:1
# Build stage: compile the Rust workspace including examples
FROM rust:1.80-slim-bullseye AS builder
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
ca-certificates \
pkg-config \
libssl-dev \
curl \
&& rm -rf /var/lib/apt/lists/*
# Install rustup and nightly toolchain to enable edition2024 features during build
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y
ENV PATH=/root/.cargo/bin:${PATH}
RUN rustup toolchain install nightly
# Build workspace with nightly toolchain to support newer Cargo features
WORKDIR /workspace
COPY . .
RUN cargo +nightly build --locked --examples
# Runtime stage: run the prebuilt binaries
FROM debian:bookworm-slim AS runtime
# Minimal runtime dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
libssl3 \
file \
&& rm -rf /var/lib/apt/lists/*
RUN mkdir -p /workspace
WORKDIR /workspace
# Copy the server example binary and ensure runtime has the directory
COPY --from=builder /workspace/target/debug/examples/server /usr/local/bin/server
# Expose the default QUIC server port (4433)
EXPOSE 4433
# Run the server example with the repository mounted at /workspace
CMD ["/usr/local/bin/server", "/workspace"]
Smoke [PASS]: test -x /usr/local/bin/server Smoke [PASS]: test -d /workspace Smoke [PASS]: file /usr/local/bin/server