FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
cmake \
git \
curl \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# Create work directory and copy source
WORKDIR /workspace
COPY . /workspace
# Create build directory
RUN mkdir -p build
WORKDIR /workspace/build
# Configure the project (build CLI by default; GUI, video, bindings are OFF by default)
RUN cmake .. -DCMAKE_BUILD_TYPE=Release \
-DAC_BUILD_CLI=ON \
-DAC_BUILD_GUI=OFF \
-DAC_BUILD_VIDEO=OFF \
-DAC_BUILD_BINDING_C=OFF \
-DAC_BUILD_BINDING_PYTHON=OFF
# Build the project (parallel jobs)
RUN cmake --build . -- -j$(nproc)
# Default to an interactive shell to explore/run the container
CMD ["/bin/bash"]
# Ignore version control .git/ # Node and Python artifacts node_modules/ pip-wheel/ __pycache__/ *.pyc # Build directories build/ dist/ CMakeFiles/ CMakeCache.txt CMakeFiles # OS junk *.log *.tmp
Concerns: CLI binary location/name is project-specific; the image does not install the CLI into PATH, so users must locate and invoke the built binary from the build directory., No explicit install step for the built artifacts; future changes to the project could alter the CLI location/name or require additional runtime dependencies. Smoke [PASS]: test -d /workspace/build && echo BUILD_DIR_OK Smoke [PASS]: EXE=$(find /workspace/build -type f -executable -print | head -n 1); if [ -n \"$EXE\" ]; then \"$EXE\" --version 2>&1 || true; else echo NO_EXECUTABLE_FOUND; fi Smoke [PASS]: ls -la /workspace/build | head -n 10