From 5f22f580bd8b4aaf9526e650e8d4eaa68c1ded15 Mon Sep 17 00:00:00 2001 From: walljm Date: Wed, 9 Jan 2019 09:26:51 -0500 Subject: [PATCH] FEATURE: added docker files to build android app and/or just run the app. --- DynamicBibleIonic/.dockerignore | 4 + DynamicBibleIonic/Dockerfile | 33 ++++++++ DynamicBibleIonic/android.Dockerfile | 82 +++++++++++++++++++ DynamicBibleIonic/docker-compose.yml | 12 +++ .../docker/android-accept-licenses.sh | 14 ++++ DynamicBibleIonic/docker/build.sh | 6 ++ 6 files changed, 151 insertions(+) create mode 100644 DynamicBibleIonic/.dockerignore create mode 100644 DynamicBibleIonic/Dockerfile create mode 100644 DynamicBibleIonic/android.Dockerfile create mode 100644 DynamicBibleIonic/docker-compose.yml create mode 100644 DynamicBibleIonic/docker/android-accept-licenses.sh create mode 100644 DynamicBibleIonic/docker/build.sh diff --git a/DynamicBibleIonic/.dockerignore b/DynamicBibleIonic/.dockerignore new file mode 100644 index 00000000..13c3ac7f --- /dev/null +++ b/DynamicBibleIonic/.dockerignore @@ -0,0 +1,4 @@ +node_modules +platforms +.sourcemaps +plugins \ No newline at end of file diff --git a/DynamicBibleIonic/Dockerfile b/DynamicBibleIonic/Dockerfile new file mode 100644 index 00000000..4a79b3df --- /dev/null +++ b/DynamicBibleIonic/Dockerfile @@ -0,0 +1,33 @@ +FROM ubuntu:16.04 + +ENV DEBIAN_FRONTEND=noninteractive \ +NODE_VERSION=10.13.0 \ +NPM_VERSION=6.5.0 \ +IONIC_VERSION=4.6.0 + +# Install basics +RUN apt-get update +RUN apt-get install -y git wget curl unzip build-essential ruby ruby-dev ruby-ffi gcc make +RUN curl --retry 3 -SLO "http://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.gz" +RUN tar -xzf "node-v$NODE_VERSION-linux-x64.tar.gz" -C /usr/local --strip-components=1 +RUN rm "node-v$NODE_VERSION-linux-x64.tar.gz" +RUN npm install -g npm@"$NPM_VERSION" +RUN npm install -g cordova@"$CORDOVA_VERSION" ionic@"$IONIC_VERSION" +RUN npm cache clear --force +RUN gem install sass + +RUN apt-get install software-properties-common -y +RUN add-apt-repository ppa:mercurial-ppa/releases +RUN apt-get update +RUN apt-get install mercurial -y + +# Test First Build so that it will be faster later +WORKDIR /db +RUN hg clone https://walljm@bitbucket.org/walljm/dynamicbible +WORKDIR /db/dynamicbible/DynamicBibleIonic +RUN hg update main +RUN ls -laF +RUN npm install + +EXPOSE 8100 35729 +CMD ["build.sh"] diff --git a/DynamicBibleIonic/android.Dockerfile b/DynamicBibleIonic/android.Dockerfile new file mode 100644 index 00000000..a925baf3 --- /dev/null +++ b/DynamicBibleIonic/android.Dockerfile @@ -0,0 +1,82 @@ +FROM ubuntu:16.04 + +ENV DEBIAN_FRONTEND=noninteractive \ +ANDROID_HOME=/opt/android-sdk-linux \ +NODE_VERSION=10.13.0 \ +NPM_VERSION=6.5.0 \ +IONIC_VERSION=4.6.0 \ +CORDOVA_VERSION=8.0.0 \ +GRADLE_VERSION=4.10.2 \ +SCMNAME="Jason Wall" \ +SCMEMAIL="jason@walljm.com" + +# Install basics +RUN apt-get update +RUN apt-get install -y git wget curl unzip build-essential ruby ruby-dev ruby-ffi gcc make +RUN curl --retry 3 -SLO "http://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.gz" +RUN tar -xzf "node-v$NODE_VERSION-linux-x64.tar.gz" -C /usr/local --strip-components=1 +RUN rm "node-v$NODE_VERSION-linux-x64.tar.gz" +RUN npm install -g npm@"$NPM_VERSION" +RUN npm install -g cordova@"$CORDOVA_VERSION" ionic@"$IONIC_VERSION" +RUN npm cache clear --force +RUN gem install sass + +RUN git config --global user.email "${SCMEMAIL}" && \ +git config --global user.name "${SCMNAME}" + +RUN apt-get install software-properties-common -y + +RUN add-apt-repository ppa:mercurial-ppa/releases +RUN apt-get update +RUN apt-get install mercurial -y + +# install python-software-properties (so you can do add-apt-repository) +RUN apt-get update && apt-get install -y -q python-software-properties software-properties-common && \ +add-apt-repository ppa:webupd8team/java -y && \ +echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections && \ +apt-get update && apt-get -y install oracle-java8-installer + +#ANDROID STUFF +RUN echo ANDROID_HOME="${ANDROID_HOME}" >> /etc/environment && \ +dpkg --add-architecture i386 && \ +apt-get update && \ +apt-get install -y --force-yes expect ant wget zipalign libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1 qemu-kvm kmod && \ +apt-get clean && \ +apt-get autoclean && \ +rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +# Install Android SDK +RUN cd /opt && \ +wget --output-document=android-sdk.tgz --quiet http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz && \ +tar xzf android-sdk.tgz && \ +rm -f android-sdk.tgz && \ +chown -R root. /opt + +# Install Gradle +RUN wget https://services.gradle.org/distributions/gradle-"$GRADLE_VERSION"-bin.zip && \ +mkdir /opt/gradle && \ +unzip -d /opt/gradle gradle-"$GRADLE_VERSION"-bin.zip && \ +rm -rf gradle-"$GRADLE_VERSION"-bin.zip + +# Setup environment + +ENV PATH ${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools:/opt/tools:/opt/gradle/gradle-"$GRADLE_VERSION"/bin + +# Install sdk elements +COPY docker /opt/tools + +RUN ["/opt/tools/android-accept-licenses.sh", "android update sdk --all --no-ui --filter platform-tools,tools,build-tools-26.0.2,android-27,android-26,build-tools-25.0.0,android-25,extra-android-support,extra-android-m2repository,extra-google-m2repository"] +RUN unzip ${ANDROID_HOME}/temp/*.zip -d ${ANDROID_HOME} + +# Test First Build so that it will be faster later +WORKDIR /db +RUN hg clone https://walljm@bitbucket.org/walljm/dynamicbible +WORKDIR /db/dynamicbible/DynamicBibleIonic +RUN hg update main +RUN ls -laF +RUN npm install +RUN ionic cordova platform add android +COPY docker/build.sh /build.sh + +EXPOSE 8100 35729 +CMD ["build.sh"] diff --git a/DynamicBibleIonic/docker-compose.yml b/DynamicBibleIonic/docker-compose.yml new file mode 100644 index 00000000..387def26 --- /dev/null +++ b/DynamicBibleIonic/docker-compose.yml @@ -0,0 +1,12 @@ +version: "3" +services: + web: + image: dynamicbible:3.2.0 + build: + context: ./ + dockerfile: ./Dockerfile + ports: + - 8100:8100 + - 35729:35729 + volumes: + - ./releases:/db/dynamicbible/DynamicBibleIonic/platforms/android/app/build/outputs/apk/release/ \ No newline at end of file diff --git a/DynamicBibleIonic/docker/android-accept-licenses.sh b/DynamicBibleIonic/docker/android-accept-licenses.sh new file mode 100644 index 00000000..fab1fe35 --- /dev/null +++ b/DynamicBibleIonic/docker/android-accept-licenses.sh @@ -0,0 +1,14 @@ +#!/usr/bin/expect -f + +set timeout 1800 +set cmd [lindex $argv 0] +set licenses [lindex $argv 1] + +spawn {*}$cmd +expect { + "Do you accept the license '*'*" { + exp_send "y\r" + exp_continue + } + eof +} \ No newline at end of file diff --git a/DynamicBibleIonic/docker/build.sh b/DynamicBibleIonic/docker/build.sh new file mode 100644 index 00000000..db3f6dd6 --- /dev/null +++ b/DynamicBibleIonic/docker/build.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +cd /db/dynamicbible/DynamicBibleIonic +hg pull +hg update main +ionic serve \ No newline at end of file