- Use --wasm flag for WebAssembly compilation - Add cache-busting for JS/WASM assets - Replace nginx with static-web-server on scratch (~18MB) - Run as non-root user Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
127 lines
5.9 KiB
Markdown
127 lines
5.9 KiB
Markdown
# Flutter SDK Docker Images
|
|
|
|
<a href="https://git.openharbor.io/svrnty/docker-flutter-sdk" target="_blank"><img src="https://img.shields.io/badge/Git-Repository-orange?logo=gitea" alt="Git Repository"></a>
|
|
<a href="https://hub.docker.com/r/svrnty/flutter-sdk" target="_blank"><img src="https://img.shields.io/badge/Docker%20Hub-svrnty%2Fflutter--sdk-blue?logo=docker" alt="Docker Hub"></a>
|
|
<a href="https://hub.docker.com/r/svrnty/flutter-sdk" target="_blank"><img src="https://img.shields.io/docker/pulls/svrnty/flutter-sdk?logo=docker" alt="Docker Pulls"></a>
|
|
<a href="https://developer.android.com/tools/releases/build-tools" target="_blank"><img src="https://img.shields.io/badge/Android%20SDK-36.1.0-green?logo=android" alt="Android SDK"></a>
|
|
<a href="https://wolfi.dev" target="_blank"><img src="https://img.shields.io/badge/Base-Wolfi-purple?logo=linux" alt="Wolfi"></a>
|
|
|
|
Lightweight Flutter SDK images for CI/CD pipelines. Built on [Wolfi](https://wolfi.dev), a security-focused Linux distribution designed for containers.
|
|
|
|
## Images
|
|
|
|
| Variant | Use Case | Size | Arch |
|
|
|---------|----------|------|------|
|
|
| <a href="https://hub.docker.com/r/svrnty/flutter-sdk/tags?name=web" target="_blank"><img src="https://img.shields.io/badge/flutter--sdk-web--3.38.9-blue?logo=docker" alt="web-3.38.9"></a> | Web/WASM builds | <img src="https://img.shields.io/docker/image-size/svrnty/flutter-sdk/web-3.38.9?label=&logo=docker" alt="size"> | <a href="https://hub.docker.com/r/svrnty/flutter-sdk/tags?name=web" target="_blank"><img src="https://img.shields.io/badge/amd64-E65100" alt="amd64"></a> <a href="https://hub.docker.com/r/svrnty/flutter-sdk/tags?name=web" target="_blank"><img src="https://img.shields.io/badge/arm64-2e7d32" alt="arm64"></a> |
|
|
| <a href="https://hub.docker.com/r/svrnty/flutter-sdk/tags?name=android" target="_blank"><img src="https://img.shields.io/badge/flutter--sdk-android--3.38.9-blue?logo=docker" alt="android-3.38.9"></a> | Android APK/AAB builds | <img src="https://img.shields.io/docker/image-size/svrnty/flutter-sdk/android-3.38.9?label=&logo=docker" alt="size"> | <a href="https://hub.docker.com/r/svrnty/flutter-sdk/tags?name=android" target="_blank"><img src="https://img.shields.io/badge/amd64-E65100" alt="amd64"></a> <a href="https://hub.docker.com/r/svrnty/flutter-sdk/tags?name=android" target="_blank"><img src="https://img.shields.io/badge/arm64-2e7d32" alt="arm64"></a> |
|
|
| <a href="https://hub.docker.com/r/svrnty/flutter-sdk/tags?name=linux" target="_blank"><img src="https://img.shields.io/badge/flutter--sdk-linux--3.38.9-blue?logo=docker" alt="linux-3.38.9"></a> | Linux desktop builds | <img src="https://img.shields.io/docker/image-size/svrnty/flutter-sdk/linux-3.38.9?label=&logo=docker" alt="size"> | <a href="https://hub.docker.com/r/svrnty/flutter-sdk/tags?name=linux" target="_blank"><img src="https://img.shields.io/badge/amd64-E65100" alt="amd64"></a> <a href="https://hub.docker.com/r/svrnty/flutter-sdk/tags?name=linux" target="_blank"><img src="https://img.shields.io/badge/arm64-2e7d32" alt="arm64"></a> |
|
|
|
|
## Why Wolfi?
|
|
|
|
[Wolfi](https://wolfi.dev) is a lightweight Linux distribution built specifically for containers. It provides:
|
|
|
|
- **Minimal footprint** - Only essential packages, nothing extra
|
|
- **Daily security updates** - Patches applied quickly
|
|
- **Designed for containers** - No legacy cruft from traditional distros
|
|
|
|
## Features
|
|
|
|
- **Lightweight** - Optimized for fast CI/CD pulls
|
|
- **Secure** - Built on Wolfi with continuous vulnerability scanning
|
|
- **Multi-arch** - Supports both `linux/amd64` and `linux/arm64`
|
|
- **Non-root** - Runs as unprivileged user (UID 65532)
|
|
- **Supply chain security** - SBOM and SLSA provenance attestations included
|
|
|
|
## Dockerfile Examples
|
|
|
|
### Web App (WASM)
|
|
|
|
```dockerfile
|
|
FROM svrnty/flutter-sdk:web-latest AS build
|
|
WORKDIR /app
|
|
COPY . .
|
|
RUN flutter pub get && flutter build web --wasm --release
|
|
|
|
# Cache-busting: append version to JS/WASM references
|
|
RUN VERSION=$(date +%s) && cd build/web && \
|
|
sed -i "s|flutter_bootstrap\.js\"|flutter_bootstrap.js?v=${VERSION}\"|g" index.html && \
|
|
sed -i "s|main\.dart\.js\"|main.dart.js?v=${VERSION}\"|g" flutter_bootstrap.js && \
|
|
sed -i "s|main\.dart\.mjs\"|main.dart.mjs?v=${VERSION}\"|g" flutter_bootstrap.js && \
|
|
sed -i "s|main\.dart\.wasm\"|main.dart.wasm?v=${VERSION}\"|g" flutter_bootstrap.js
|
|
|
|
FROM ghcr.io/static-web-server/static-web-server:2 AS sws
|
|
FROM scratch
|
|
COPY --from=sws /static-web-server /static-web-server
|
|
COPY --from=build /app/build/web /public
|
|
EXPOSE 8080
|
|
USER 65534
|
|
ENTRYPOINT ["/static-web-server", "-p", "8080", "-d", "/public"]
|
|
```
|
|
|
|
### Android APK
|
|
|
|
```dockerfile
|
|
FROM svrnty/flutter-sdk:android-latest AS build
|
|
COPY . /app
|
|
WORKDIR /app
|
|
RUN flutter pub get && flutter build apk --release
|
|
|
|
FROM scratch
|
|
COPY --from=build /app/build/app/outputs/flutter-apk/app-release.apk /
|
|
```
|
|
|
|
### Linux Desktop
|
|
|
|
```dockerfile
|
|
FROM svrnty/flutter-sdk:linux-latest AS build
|
|
COPY . /app
|
|
WORKDIR /app
|
|
RUN flutter pub get && flutter build linux --release
|
|
|
|
FROM ubuntu:22.04
|
|
RUN apt-get update && apt-get install -y libgtk-3-0 && rm -rf /var/lib/apt/lists/*
|
|
COPY --from=build /app/build/linux/x64/release/bundle /app
|
|
ENTRYPOINT ["/app/my_app"]
|
|
```
|
|
|
|
## CI/CD
|
|
|
|
```yaml
|
|
# GitHub Actions / Gitea Actions
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
container:
|
|
image: svrnty/flutter-sdk:android-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- run: flutter pub get
|
|
- run: flutter build apk --release
|
|
```
|
|
|
|
```yaml
|
|
# GitLab CI
|
|
build:
|
|
image: svrnty/flutter-sdk:android-latest
|
|
script:
|
|
- flutter pub get
|
|
- flutter build apk --release
|
|
```
|
|
|
|
## Tags
|
|
|
|
- `<variant>-latest` - Latest stable Flutter release
|
|
- `<variant>-<version>` - Specific Flutter version (e.g., `android-3.38.9`)
|
|
|
|
## Automatic Updates
|
|
|
|
Images are automatically rebuilt when:
|
|
- New Flutter stable versions are released
|
|
- Base image security updates are available
|
|
|
|
Every build is scanned and includes supply chain attestations (SBOM, SLSA provenance).
|
|
|
|
## License
|
|
|
|
MIT
|