Dockers Images
Images Docker
Cette page résume l’utilisation d’images docker utilisées en TP
Maven
Android
Pour Android, je propose une image de base :Android qui contient le sdk de base. Elle doit être spécialisée et permet de créer simplement une configuration personnalisée. Je propose aussi des configurations “complètes”.
Un SDK "complet"
L’application exemple sera dans /tmp/app
et le cache gradle dans /tmp/user
. Sur le réseau filaire du campus les variables UTLN_USERNAME et UTLN_PASSWORD doivent être complétée sinon toutes les références au proxy peuvent être supprimées. L’application exemple est générée à partir de la commande android
(la commande sed
est utilisée pour adpater l’exemple à la version du plugin android).
mkdir -p /tmp/app mkdir -p /tmp/user export UTLN_USERNAME= export UTLN_PASSWORD= export http_proxy=http://${UTLN_USERNAME}:${UTLN_PASSWORD}@proxy.univ-tln.fr:3128 docker pull brunoe-docker.lsis.univ-tln.fr:443/brunoe/androidsdk:24 (ou docker pull brunoe-docker.lsis.univ-tln.fr:443/brunoe/androidsdk:24.0.2-ee7a9ae-53 pour garantir la répétabilité) docker run -it --rm --user `id -u` \ -v /tmp/app:/usr/src/app \ -v /tmp/user:/home/user \ brunoe-docker.lsis.univ-tln.fr:443/brunoe/androidsdk:24 \ android create project \ --name androidtest \ --target android-24 \ --package fr.univtln.bruno.androidtest \ --path /usr/src/app/androidtest \ --activity MainActivity --gradle --gradle-version 2.1.3 sed -i \ -e 's/\/gradle.*\.zip$/\/gradle-2.14.1-all.zip/' \ /tmp/app/androidtest/gradle/wrapper/gradle-wrapper.properties sed -i \ -e 's/runProguard/minifyEnabled/' \ /tmp/app/androidtest/build.gradle
Il est possible de compiler directement (la bonne version de gradle est téléchargée la première fois ainsi que les dépendances maven) :
docker run \ -e "http_proxy=$http_proxy" \ -e "https_proxy=$http_proxy" \ -it --rm --user `id -u` \ -v /tmp/app:/usr/src/app \ -v /tmp/user:/home/user \ -w /usr/src/app/androidtest \ brunoe-docker.lsis.univ-tln.fr:443/brunoe/androidsdk:24 \ ./gradlew \ -Dhttp.proxyHost=proxy.univ-tln.fr -Dhttp.proxyPort=3128 \ -Dhttp.proxyUser=${UTLN_USERNAME} -Dhttp.proxyPassword=${UTLN_PASSWORD} \ -Dhttps.proxyHost=proxy.univ-tln.fr -Dhttps.proxyPort=3128 \ -Dhttps.proxyUser=${UTLN_USERNAME} -Dhttps.proxyPassword=${UTLN_PASSWORD} \ -Duser.home=/home/user \ assemble
Il est aussi possible d’utiliser le démon de Gradle pour accélérer la compilation.
touch /tmp/user/gradle.properties \ && echo "org.gradle.daemon=true" >> /tmp/user/gradle.properties \ && echo "org.gradle.jvmargs=-Xmx2048M" >> /tmp/user/gradle.properties docker run --rm -it --user `id -u`\ -e "http_proxy=$http_proxy" \ -e "https_proxy=$http_proxy" \ -v /tmp/app:/usr/src/app \ -v /tmp/user:/home/user \ -w /usr/src/app/androidtest \ brunoe-docker.lsis.univ-tln.fr:443/brunoe/androidsdk:24 \ ./gradlew \ -Dhttp.proxyHost=proxy.univ-tln.fr -Dhttp.proxyPort=3128 \ -Dhttp.proxyUser=${UTLN_USERNAME} -Dhttp.proxyPassword=${UTLN_PASSWORD} \ -Dhttps.proxyHost=proxy.univ-tln.fr -Dhttps.proxyPort=3128 \ -Dhttps.proxyUser=${UTLN_USERNAME} -Dhttps.proxyPassword=${UTLN_PASSWORD} \ -Duser.home=/home/user \ bash
On peut ensuite utiliser ./gradlew assemble
dans le shell du conteneur.
Pour utiliser adb depuis docker il faut vérifier que le démon adb ne tourne pas sur l’hôte.
docker run \ -it --rm --privileged -v /dev/bus/usb:/dev/bus/usb \ brunoe-docker.lsis.univ-tln.fr:443/brunoe/android adb devices
docker run \ -it --rm --privileged \ -v /dev/bus/usb:/dev/bus/usb \ -v /tmp/app:/usr/src/app \ -v /tmp/user:/home/user \ -w /usr/src/app/androidtest \ brunoe-docker.lsis.univ-tln.fr:443/brunoe/android \ adb install -r `find /tmp/app -name *-debug.apk|cut -d '/' -f 5-`