FROM debian:oldstable-slim
# Build- based container for ImGui repository
# Install essential build tools and dependencies
RUN set -eux; \
apt-get update; \
apt-get install -y --no-install-recommends \
build-essential \
cmake \
libglfw3-dev \
libsdl2-dev \
gcc-multilib \
g++-multilib \
libfreetype6-dev \
libvulkan-dev \
pkg-config; \
rm -rf /var/lib/apt/lists/*
# Copy source into the image
WORKDIR /imgui
COPY . /imgui
# Configure and build from source. We try to disable building additional examples to keep build lightweight
RUN cmake -S . -B build -DCMAKE_BUILD_TYPE=Release \
-DIMGUI_BUILD_EXAMPLES=OFF || true
RUN cmake --build build -j$(nproc)
# Provide a shell to inspect the image when running in interactive mode
CMD ["/bin/bash"]
- Exact error message and exit code - Final failure: process "/bin/sh -c cmake --build build -j$(nproc)" did not complete successfully: exit code: 1 - Intermediate error (masked by || true): CMake Error: The source directory "/imgui" does not appear to contain CMakeLists.txt. - Additional failure detail: Error: /imgui/build is not a directory - Failing command/step - Step [5/6] RUN cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DIMGUI_BUILD_EXAMPLES=OFF || true - Step [6/6] RUN cmake --build build -j$(nproc) - Missing packages or files mentioned - The source directory for CMake is /imgui and is missing a CMakeLists.txt (CMake error above). - Because /imgui/build was not created as a directory due to the missing CMakeLists.txt, the final build step fails with “Error: /imgui/build is not a directory”. - Version mismatch information - Base image used: Debian oldstable (FROM debian:oldstable-slim), which can imply an older toolchain not aligned with the required CMake/BUILD setup. No explicit version mismatch error is shown beyond the base image choice.
FROM debian:oldstable-slim
# Build- based container for ImGui repository (Linux)
# Install essential build tools and dependencies
RUN set -eux; \
apt-get update; \
apt-get install -y --no-install-recommends \
build-essential \
gcc-multilib \
g++-multilib \
libglfw3-dev \
libsdl2-dev \
libfreetype6-dev \
libvulkan-dev \
pkg-config \
make \
ca-certificates; \
rm -rf /var/lib/apt/lists/*
# Copy source into the image
WORKDIR /imgui
COPY . /imgui
# Build a representative Linux target from source (example_null)
# The repository uses Makefiles for Linux builds (as in GitHub Actions workflow).
RUN set -eux; \
cd examples/example_null; \
make clean; \
WITH_EXTRA_WARNINGS=1 make
# Provide a shell to inspect the image when running in interactive mode
CMD ["/bin/bash"]
Concerns: Base image debian:oldstable-slim is very old; consider updating to a newer Debian release to ensure security updates and newer toolchains., Depends on repository having a Linux target at examples/example_null; if the repo layout changes, the build step may fail. Smoke [PASS]: find /imgui -type f -name example_null -executable -print -quit Smoke [PASS]: ls -la /imgui/examples/example_null 2>/dev/null || true Smoke [FAIL]: test -x $(find /imgui -type f -name example_null -executable -print -quit 2>/dev/null || true) && echo 'example_null executable found' || echo 'example_null not found or not executable Output: sh: 1: Syntax error: Unterminated quoted string
FROM debian:oldstable-slim
# Linux build environment for ImGui repository (Make-based Linux build)
RUN set -eux; \
apt-get update; \
# Install essential build tools and dependencies
apt-get install -y --no-install-recommends \
build-essential \
gcc-multilib \
g++-multilib \
libglfw3-dev \
libsdl2-dev \
libfreetype6-dev \
libvulkan-dev \
pkg-config \
make \
ca-certificates; \
rm -rf /var/lib/apt/lists/*
# Copy source into the image
WORKDIR /imgui
COPY . /imgui
# Build Linux example_null from source
RUN set -eux; \
cd examples/example_null; \
make clean; \
WITH_EXTRA_WARNINGS=1 make
# Create a predictable entry path for smoke tests: /imgui/example_null -> built executable
RUN set -eux; \
EXE=$(find /imgui -type f -name example_null -executable -print -quit 2>/dev/null || true); \
if [ -n "$EXE" ]; then \
ln -sf "$EXE" /imgui/example_null; \
fi
# Default to an interactive shell for inspection
CMD ["/bin/bash"]
Concerns: Base image debian:oldstable-slim may be outdated; consider pinning to a supported Debian release., COPY . /imgui copies the entire build context; consider using a .dockerignore to reduce image size and build time., The final image runs a bash shell; consider adding a non-root user or a more restricted entrypoint for security. Smoke [PASS]: test -x /imgui/example_null Smoke [PASS]: ldd /imgui/example_null | head -n 5 Smoke [PASS]: ls -l /imgui | head -n 5