FROM coder-devbox-flutter:latest AS base-default USER root # Same XFCE4 + TigerVNC + noVNC stack as devbox/vnc, layered on top of the # already-built Flutter image instead of base-config directly — reuses the # Flutter/fvm layer's build cache entirely rather than reinstalling it. RUN DEBIAN_FRONTEND=noninteractive apt-get update -qq \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ xfce4 xfce4-terminal dbus-x11 \ tigervnc-standalone-server tigervnc-common \ novnc websockify \ fonts-dejavu-core \ x11vnc \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* # x11vnc is installed only for its `storepasswd` tool — see devbox/vnc's # Dockerfile for why (no vncpasswd equivalent in this Ubuntu package split). # x11vnc itself is never run. # Flutter's own Linux desktop build requirements (per Flutter's official # docs) — needed so `flutter run -d linux` / `flutter build linux` actually # work inside this workspace, with the VNC desktop providing a real display # for the resulting GUI app to run against instead of Xvfb-style headless # testing. RUN DEBIAN_FRONTEND=noninteractive apt-get update -qq \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev libstdc++-12-dev \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* # Lives outside /home/coder — see vnc-startup.sh header comment. COPY ./vnc-startup.sh /usr/local/bin/vnc-startup.sh RUN chmod +x /usr/local/bin/vnc-startup.sh USER coder RUN flutter config --enable-linux-desktop