Created
February 27, 2019 07:42
-
-
Save zhaozhiming/f4a082168f4d82876a50dc6c0ba7e8b5 to your computer and use it in GitHub Desktop.
Dockerfile for react native and android
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FROM openjdk:8-slim | |
ENV ANDROID_DEPS libc6:i386 libstdc++6:i386 zlib1g:i386 libncurses5:i386 unzip tar git | |
ENV NODE_DEPS gnupg dirmngr curl git python make g++ | |
# Install dependencies | |
RUN dpkg --add-architecture i386 && \ | |
apt-get -qq update && \ | |
apt-get -qqy install $ANDROID_DEPS --no-install-recommends && \ | |
apt-get -qqy install $NODE_DEPS --no-install-recommends && \ | |
apt-get clean && \ | |
apt-get autoremove && \ | |
rm -rf /var/lib/apt/lists/* | |
# Install node | |
RUN set -ex \ | |
&& for key in \ | |
94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \ | |
FD3A5288F042B6850C66B31F09FE44734EB7990E \ | |
71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \ | |
DD8F2338BAE7501E3DD5AC78C273792F7D83545D \ | |
C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \ | |
B9AE9905FFD7803F25714661B63B535A4C206CA9 \ | |
56730D5401028683275BD23C23EFEFE93C4CFFFE \ | |
77984A986EBC2AA786BC0F66B01FBB92821C587A \ | |
8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 \ | |
; do \ | |
gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \ | |
gpg --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \ | |
gpg --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \ | |
done | |
ENV NODE_VERSION 10.0.0 | |
ENV ARCH x64 | |
RUN curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" \ | |
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \ | |
&& gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \ | |
&& grep " node-v$NODE_VERSION-linux-$ARCH.tar.xz\$" SHASUMS256.txt | sha256sum -c - \ | |
&& tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \ | |
&& rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \ | |
&& ln -s /usr/local/bin/node /usr/local/bin/nodejs | |
ENV YARN_VERSION 1.6.0 | |
RUN set -ex \ | |
&& for key in \ | |
6A010C5166006599AA17F08146C2130DFD2497F5 \ | |
; do \ | |
gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \ | |
gpg --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \ | |
gpg --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \ | |
done \ | |
&& curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \ | |
&& curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \ | |
&& gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \ | |
&& mkdir -p /opt \ | |
&& tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ \ | |
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \ | |
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg \ | |
&& rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz | |
# Download and unzip Android SDK | |
ENV ANDROID_HOME ${SDK_HOME}/android-sdk-linux | |
ENV ANDROID_SDK ${SDK_HOME}/android-sdk-linux | |
ENV ANDROID_SDK_MANAGER ${ANDROID_HOME}/tools/bin/sdkmanager | |
ENV SDK_TOOLS 4333796 | |
# Download and extract Android Tools | |
RUN curl -s https://dl.google.com/android/repository/sdk-tools-linux-${SDK_TOOLS}.zip > /tmp/tools.zip && \ | |
mkdir -p ${ANDROID_HOME} && \ | |
unzip /tmp/tools.zip -d ${ANDROID_HOME} && \ | |
rm -v /tmp/tools.zip | |
ENV PATH ${ANDROID_HOME}/tools:${ANDROID_HOME}/tools/bin:$ANDROID_HOME/platform-tools:$PATH | |
# Install Android SDK Components | |
ENV SDK_COMPONENTS "tools" \ | |
"platform-tools" \ | |
"build-tools;27.0.3" \ | |
"platforms;android-27" \ | |
"platforms;android-26" \ | |
"platforms;android-25" \ | |
"extras;android;m2repository" \ | |
"extras;google;m2repository" \ | |
"extras;google;google_play_services" \ | |
"extras;m2repository;com;android;support;constraint;constraint-layout;1.0.2" \ | |
"extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.2" | |
RUN mkdir -p ${ANDROID_HOME}/licenses/ && \ | |
echo "8933bad161af4178b1185d1a37fbf41ea5269c55" > ${ANDROID_HOME}/licenses/android-sdk-license && \ | |
echo "84831b9409646a918e30573bab4c9c91346d8abd" > ${ANDROID_HOME}/licenses/android-sdk-preview-license && \ | |
yes | ${ANDROID_SDK_MANAGER} "--licenses" && \ | |
${ANDROID_SDK_MANAGER} ${SDK_COMPONENTS} | |
# Install watchman | |
ENV WATCHMAN_BUILD_DEPS autoconf automake libpcre3-dev libtool pkg-config libssl-dev | |
RUN dpkg --add-architecture i386 && \ | |
apt-get -qq update && \ | |
apt-get -qqy install $WATCHMAN_BUILD_DEPS --no-install-recommends && \ | |
git clone https://github.com/facebook/watchman.git && \ | |
cd watchman && \ | |
git checkout v4.9.0 && \ | |
./autogen.sh && \ | |
./configure --without-python && \ | |
make && \ | |
make install && \ | |
cd .. && rm -rf watchman && \ | |
apt-get --assume-yes remove --auto-remove --purge $WATCHMAN_BUILD_DEPS && \ | |
apt-get clean && \ | |
apt-get autoremove && \ | |
rm -rf /var/lib/apt/lists/* |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment