63 lines
2.4 KiB
Docker
63 lines
2.4 KiB
Docker
FROM coder-devbox-base-config:latest AS base-default
|
|||
|
|
|
||
|
|
ARG FLUTTER_TESTING_TOOLS="false"
|
||
|
|
|
||
|
|
USER coder
|
||
|
|
|
||
|
|
RUN echo "[ Installing fvm ]" \
|
||
|
|
&& curl -fsSL https://fvm.app/install.sh | bash \
|
||
|
|
&& export PATH="$HOME/fvm/bin:$PATH" \
|
||
|
|
&& echo "[ Installing Flutter SDK (stable) ]" \
|
||
|
|
&& "$HOME/fvm/bin/fvm" install stable \
|
||
|
|
&& "$HOME/fvm/bin/fvm" global stable \
|
||
|
|
&& "$HOME/fvm/default/bin/flutter" --version
|
||
|
|
|
||
|
|
USER root
|
||
|
|
|
||
|
|
# Move the installed SDK + fvm binary out of /home/coder into the image
|
||
|
|
# filesystem, so it survives stale/old persisted home volumes on
|
||
|
|
# workspace stop/start. Leave nothing important depending on $HOME/fvm.
|
||
|
|
RUN mkdir -p /usr/local/fvm \
|
||
|
|
&& cp -a /home/coder/fvm/. /usr/local/fvm/ \
|
||
|
|
&& REAL_VERSION_DIR="$(readlink -f /home/coder/fvm/default)" \
|
||
|
|
&& VERSION_NAME="$(basename "$REAL_VERSION_DIR")" \
|
||
|
|
&& rm -f /usr/local/fvm/default \
|
||
|
|
&& ln -sfn "/usr/local/fvm/versions/$VERSION_NAME" /usr/local/fvm/default \
|
||
|
|
&& chown -R coder:coder /usr/local/fvm \
|
||
|
|
&& ln -sf /usr/local/fvm/bin/fvm /usr/local/bin/fvm \
|
||
|
|
&& ln -sf /usr/local/fvm/default/bin/flutter /usr/local/bin/flutter \
|
||
|
|
&& ln -sf /usr/local/fvm/default/bin/dart /usr/local/bin/dart \
|
||
|
|
&& rm -rf /home/coder/fvm
|
||
|
|
|
||
|
|
USER coder
|
||
|
|
|
||
|
|
RUN /usr/local/bin/flutter --version
|
||
|
|
|
||
|
|
|
||
|
|
# Flutter Testing Tools - apt packages baked into the image
|
||
|
|
RUN if [ "$FLUTTER_TESTING_TOOLS" = "true" ]; then \
|
||
|
|
echo "[ Installing Flutter testing tools ]"; \
|
||
|
|
fi
|
||
|
|
|
||
|
|
RUN if [ "$FLUTTER_TESTING_TOOLS" = "true" ]; then \
|
||
|
|
DEBIAN_FRONTEND=noninteractive apt-get update -qq \
|
||
|
|
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
|
||
|
|
pkg-config xvfb x11-utils cmake clang mesa-utils libgtk-3-dev ninja-build \
|
||
|
|
&& echo "[ Testing tools ready: xvfb, cmake, clang, ninja, pkg-config ]"; \
|
||
|
|
else \
|
||
|
|
echo "[ Skipping Flutter testing tools ]"; \
|
||
|
|
fi
|
||
|
|
|
||
|
|
USER coder
|
||
|
|
|
||
|
|
# marionette_mcp / patrol_cli install into ~/.pub-cache, which lives in the
|
||
|
|
# persisted home volume — these must be (re)activated per-workspace, not baked
|
||
|
|
# into the image. Handle this in a startup script instead, e.g.:
|
||
|
|
#
|
||
|
|
# if [ "$FLUTTER_TESTING_TOOLS" = "true" ]; then
|
||
|
|
# mkdir -p "$HOME/.pub-cache/bin"
|
||
|
|
# dart pub global activate marionette_mcp
|
||
|
|
# flutter pub global activate patrol_cli
|
||
|
|
# sudo ln -sf "$HOME/.pub-cache/bin/marionette_mcp" /usr/local/bin/marionette_mcp
|
||
|
|
# sudo ln -sf "$HOME/.pub-cache/bin/patrol" /usr/local/bin/patrol
|
||
|
|
# fi
|