refactor(docker): optimize base image and clean up build steps - Use /etc/sudoers.d/coder for sudo configuration in Dockerfile. - Delete unused Flutter engine artifacts and pub cache assets to reduce image size. - Explicitly extract Flutter to /opt with --no-same-owner. - Add 'flutter doctor' verification step.
diff --git a/cloud_build/flutter_agy_docker/Dockerfile b/cloud_build/flutter_agy_docker/Dockerfile index 3e4ebd4..140f144 100644 --- a/cloud_build/flutter_agy_docker/Dockerfile +++ b/cloud_build/flutter_agy_docker/Dockerfile
@@ -39,7 +39,7 @@ ln -s $(which batcat) /usr/local/bin/bat; \ ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone; \ rm -rf /var/lib/apt/lists/*; \ - echo "coder ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers + echo "coder ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/coder; COPY update_skills.sh /usr/local/bin/update_skills.sh RUN dos2unix /usr/local/bin/update_skills.sh && chmod +x /usr/local/bin/update_skills.sh && chmod +x /usr/local/bin/update_skills.sh
diff --git a/cloud_build/flutter_agy_docker/Dockerfile.base b/cloud_build/flutter_agy_docker/Dockerfile.base index 33ffd9d..74a895a 100644 --- a/cloud_build/flutter_agy_docker/Dockerfile.base +++ b/cloud_build/flutter_agy_docker/Dockerfile.base
@@ -27,28 +27,44 @@ rm -rf /var/lib/apt/lists/* # Evict the default ubuntu user and create the target user -RUN (userdel -r ubuntu 2>/dev/null || true) && \ - groupadd -g 1000 coder && \ - useradd -u 1000 -g 1000 -m coder && \ - mkdir -p /app /opt/flutter /home/linuxbrew/.linuxbrew && \ - chown -R coder:coder /app /opt /home/linuxbrew +RUN set -ex; \ + (userdel -r ubuntu 2>/dev/null || true); \ + groupadd -g 1000 coder; \ + useradd -u 1000 -g 1000 -m coder; \ + mkdir -p /app /opt/flutter /home/linuxbrew/.linuxbrew; \ + chown -R coder:coder /app /opt /home/linuxbrew; USER coder -WORKDIR /opt - -RUN curl -fsSL https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${FLUTTER_VERSION}-stable.tar.xz | tar -xJ - -# 2. Lock in configuration and force the massive SDK downloads -ENV PATH="/opt/flutter/bin:${PATH}" -RUN flutter config \ +RUN set -ex; \ + export PATH="/opt/flutter/bin:${PATH}"; \ + # 1. Download and uncompress the flutter tool + curl -fsSL https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${FLUTTER_VERSION}-stable.tar.xz | tar -xJ --no-same-owner -C /opt; \ + # 2. Run config to ONLY ENABLE web (and disable everything else) + flutter config \ --enable-web \ --no-enable-linux-desktop \ --no-enable-macos-desktop \ --no-enable-windows-desktop \ --no-enable-android \ --no-enable-ios \ - --no-enable-fuchsia && \ - flutter precache --web && \ - flutter --version && \ - flutter --enable-analytics && dart --enable-analytics + --no-enable-fuchsia; \ + \ + # 3. Precache only the web artifacts + flutter precache --web; \ + \ + # 4. Delete the heavy cache/artifacts/engine folder and test/gallery waste + rm -rf /opt/flutter/bin/cache/artifacts/engine; \ + rm -rf /home/coder/.pub-cache/hosted/pub.dev/flutter_gallery_assets*; \ + rm -rf /home/coder/.pub-cache/hosted/pub.dev/googleapis*; \ + \ + # 5. Run doctor to finalize setup and verify web artifacts + /opt/flutter/bin/flutter doctor -v; \ + \ + # 6. Log some stuff and setup analytics (user == human) + flutter --version ; \ + flutter --enable-analytics; \ + dart --enable-analytics; + +# 2. Lock in configuration and force the massive SDK downloads +ENV PATH="/opt/flutter/bin:${PATH}"