1- FROM pwabuilder.azurecr.io/pwa-android-build-box:master AS base
1+ # ─── PRELIMINAR: Ubuntu base con Android/Java toolchain ───────────────────────
2+ FROM --platform=linux/amd64 ubuntu:20.04 AS ubuntu
23
3- WORKDIR /app
4- COPY . .
4+ ARG ANDROID_SDK_TOOLS_VERSION="11076708"
5+ ARG NODE_VERSION="20.x"
6+ ARG JENV_RELEASE="0.5.6"
57
6- ENV PORT=5858
7- EXPOSE 5858
8+ ARG DIRWORK="/tmp"
9+ ARG SDK_PACKAGES_LIST="${DIRWORK}/packages.txt"
10+
11+ ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
12+ ENV PATH=${JAVA_HOME}/bin:${PATH}
13+
14+ ENV ANDROID_HOME="/opt/android-sdk" \
15+ ANDROID_SDK_HOME="/opt/android-sdk" \
16+ ANDROID_NDK="/opt/android-sdk/ndk/latest" \
17+ ANDROID_NDK_ROOT="/opt/android-sdk/ndk/latest" \
18+ FLUTTER_HOME="/opt/flutter" \
19+ JENV_ROOT="/opt/jenv" \
20+ ANDROID_SDK_MANAGER=/opt/android-sdk/cmdline-tools/latest/bin/sdkmanager \
21+ TZ=America/Los_Angeles \
22+ LANG="en_US.UTF-8" \
23+ LANGUAGE="en_US.UTF-8" \
24+ LC_ALL="en_US.UTF-8"
25+
26+ ENV PATH="${JENV_ROOT}/shims:${JENV_ROOT}/bin:$JAVA_HOME/bin:$PATH:$ANDROID_SDK_HOME/emulator:$ANDROID_SDK_HOME/cmdline-tools/latest/bin:$ANDROID_SDK_HOME/tools:$ANDROID_SDK_HOME/platform-tools:$ANDROID_NDK:$FLUTTER_HOME/bin:$FLUTTER_HOME/bin/cache/dart-sdk/bin"
27+
28+ FROM ubuntu AS pre-base
29+ ARG TERM=dumb
30+ ARG DEBIAN_FRONTEND=noninteractive
31+ WORKDIR ${DIRWORK}
32+
33+ RUN echo export JAVA_HOME="/usr/lib/jvm/java-17-openjdk-$(uname -m)/" >> /etc/jdk.env && \
34+ echo . /etc/jdk.env >> /etc/bash.bashrc && echo . /etc.jdk.env >> /etc/profile && \
35+ apt-get update -qq && \
36+ apt-get install -qq --no-install-recommends \
37+ apt-utils locales unzip curl git git-lfs build-essential openjdk-11-jdk openjdk-17-jdk \
38+ wget zip zipalign ruby-full python3-pip tzdata && \
39+ locale-gen $LANG && \
40+ git lfs install && \
41+ ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && \
42+ rm -rf /var/lib/apt/lists/*
43+
44+
45+ FROM pre-base AS base
46+
47+ RUN wget --quiet -O sdk-tools.zip \
48+ "https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_TOOLS_VERSION}_latest.zip" && \
49+ mkdir -p "$ANDROID_HOME/cmdline-tools" && \
50+ unzip -q sdk-tools.zip -d "$ANDROID_HOME/cmdline-tools" && \
51+ rm sdk-tools.zip && \
52+ mv "$ANDROID_HOME/cmdline-tools/cmdline-tools" "$ANDROID_HOME/cmdline-tools/latest" && \
53+ echo yes | "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" --licenses && \
54+ echo yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "platform-tools" && \
55+ echo yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "platforms;android-31" && \
56+ echo yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "platforms;android-36" && \
57+ echo yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "build-tools;35.0.0" && \
58+ echo yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "build-tools;34.0.0" && \
59+ echo yes | "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" --licenses
60+
61+
62+ FROM base AS jenv-base
63+ RUN git clone --depth 1 --branch ${JENV_RELEASE} https://github.com/jenv/jenv.git ${JENV_ROOT} && \
64+ echo 'eval "$(jenv init -)"' >> ~/.bash_profile && \
65+ . ~/.bash_profile && . /etc/jdk.env && \
66+ jenv add /usr/lib/jvm/java-11-openjdk-$(uname -m) && \
67+ jenv add /usr/lib/jvm/java-17-openjdk-$(uname -m) && \
68+ jenv global 17.0
869
9- ENV JAVA_OPTS="-Xmx20000m"
70+
71+ FROM base AS pre-minimal
72+ RUN mkdir -p "$ANDROID_HOME" /.android && \
73+ echo '### User Sources for Android SDK Manager' > "$ANDROID_HOME" /.android/repositories.cfg && \
74+ echo yes | ${ANDROID_SDK_MANAGER} --licenses > /dev/null && \
75+ ${ANDROID_SDK_MANAGER} --list > ${SDK_PACKAGES_LIST}
76+
77+
78+ FROM pre-minimal AS node-final
79+ RUN curl -sL https://deb.nodesource.com/setup_${NODE_VERSION} | bash - && \
80+ apt-get update -qq && apt-get install -qq nodejs yarn && \
81+ npm install -g bower cordova eslint gulp-cli @ionic/cli mocha node-gyp
82+
83+ FROM node-final AS builder
84+ WORKDIR /app
85+
86+ COPY package*.json tsconfig.json ./
87+ COPY . .
1088
1189ENV NODE_ENV=development
1290RUN npm install
13- ENV NODE_ENV=production
91+ RUN npm run build
92+ RUN ls -la /app/server.*
93+
94+ FROM builder AS app
95+ WORKDIR /app
96+
97+ COPY --from=builder /app/package*.json ./
98+ RUN npm install --omit=dev --ignore-scripts
99+
100+ COPY --from=builder /app .
101+
102+ ENV PORT=5858
103+ EXPOSE 5858
14104
15105CMD npm start
0 commit comments