feat: aggiungi container Docker dev e build per Flutter

docker/build/: build headless APK Android
- Dockerfile: Ubuntu 22.04 + Java 17 + Flutter stable + Android SDK
- build.sh: genera android/ automaticamente se mancante, poi
  flutter build apk; --release aggiunge zipalign + apksigner

docker/dev/: ambiente di sviluppo web con hot reload
- Dockerfile: Ubuntu 22.04 + Flutter stable (solo web, senza Android SDK)
- docker-compose.yml: espone porta 5173, monta il progetto come volume
- entrypoint.sh: inizializza web/ se mancante, flutter pub get,
  flutter run -d web-server su 0.0.0.0:5173

docker/README.md: documentazione aggiornata per entrambi i container;
rimossi Dockerfile e build.sh Vue/Capacitor non più usati.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-16 18:25:48 +02:00
parent aa88e2095b
commit 36e8034efd
8 changed files with 221 additions and 272 deletions
+35
View File
@@ -0,0 +1,35 @@
FROM ubuntu:22.04
ARG ANDROID_SDK_BUILD=11076708
ENV DEBIAN_FRONTEND=noninteractive \
FLUTTER_HOME=/opt/flutter \
ANDROID_SDK_ROOT=/opt/android-sdk \
JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 \
PATH="/opt/flutter/bin:/opt/android-sdk/cmdline-tools/latest/bin:/opt/android-sdk/platform-tools:${PATH}"
RUN apt-get update && apt-get install -y --no-install-recommends \
curl wget git unzip xz-utils ca-certificates \
openjdk-17-jdk \
&& rm -rf /var/lib/apt/lists/*
RUN git clone --depth 1 --branch stable \
https://github.com/flutter/flutter.git ${FLUTTER_HOME} && \
flutter config --no-analytics && \
flutter precache --android
RUN mkdir -p ${ANDROID_SDK_ROOT}/cmdline-tools && \
wget -q "https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_BUILD}_latest.zip" \
-O /tmp/cmdtools.zip && \
unzip -q /tmp/cmdtools.zip -d ${ANDROID_SDK_ROOT}/cmdline-tools && \
mv ${ANDROID_SDK_ROOT}/cmdline-tools/cmdline-tools \
${ANDROID_SDK_ROOT}/cmdline-tools/latest && \
rm /tmp/cmdtools.zip
RUN yes | sdkmanager --licenses && \
sdkmanager \
"platform-tools" \
"platforms;android-34" \
"build-tools;34.0.0"
WORKDIR /workspace
+77
View File
@@ -0,0 +1,77 @@
#!/bin/bash
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)"
RELEASE=false
for arg in "$@"; do
[[ "$arg" == "--release" ]] && RELEASE=true
done
echo "→ Build immagine biteplan-build..."
docker build -t biteplan-build "${SCRIPT_DIR}"
if [[ ! -d "${PROJECT_ROOT}/android" ]]; then
echo "→ Cartella android/ non trovata, eseguo flutter create..."
docker run --rm \
-v "${PROJECT_ROOT}:/workspace" \
biteplan-build \
bash -c "cd /workspace && flutter create --project-name biteplan --org com.biteplan --platforms=android ."
fi
mkdir -p "${PROJECT_ROOT}/dist"
if [[ "$RELEASE" == "true" ]]; then
KEYSTORE="${SCRIPT_DIR}/../biteplan.jks"
if [[ ! -f "$KEYSTORE" ]]; then
echo "ERRORE: keystore non trovato in docker/biteplan.jks"
echo "Generalo con:"
echo " keytool -genkey -v -keystore docker/biteplan.jks -alias biteplan -keyalg RSA -keysize 2048 -validity 10000"
exit 1
fi
echo "→ Building release APK..."
docker run --rm \
-v "${PROJECT_ROOT}:/workspace" \
-v "${HOME}/.gradle:/root/.gradle" \
biteplan-build \
bash -c "cd /workspace && flutter pub get && flutter build apk --release"
echo "→ Zipalign..."
docker run --rm \
-v "${PROJECT_ROOT}:/workspace" \
biteplan-build \
bash -c "zipalign -v -p 4 \
/workspace/build/app/outputs/flutter-apk/app-release.apk \
/workspace/dist/biteplan-aligned.apk"
echo "→ Firma APK..."
docker run --rm \
-v "${PROJECT_ROOT}:/workspace" \
-v "$(realpath "${KEYSTORE%/*}"):/keystore:ro" \
biteplan-build \
bash -c "apksigner sign \
--ks /keystore/biteplan.jks \
--out /workspace/dist/biteplan-release.apk \
/workspace/dist/biteplan-aligned.apk && \
rm -f /workspace/dist/biteplan-aligned.apk && \
apksigner verify --verbose /workspace/dist/biteplan-release.apk"
echo ""
echo "✓ Release APK: dist/biteplan-release.apk"
else
echo "→ Building debug APK..."
docker run --rm \
-v "${PROJECT_ROOT}:/workspace" \
-v "${HOME}/.gradle:/root/.gradle" \
biteplan-build \
bash -c "cd /workspace && flutter pub get && flutter build apk --debug"
cp "${PROJECT_ROOT}/build/app/outputs/flutter-apk/app-debug.apk" \
"${PROJECT_ROOT}/dist/biteplan-debug.apk"
echo ""
echo "✓ Debug APK: dist/biteplan-debug.apk"
fi