Skip to content

Instantly share code, notes, and snippets.

@zhaozhiming
Created February 27, 2019 07:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zhaozhiming/f4a082168f4d82876a50dc6c0ba7e8b5 to your computer and use it in GitHub Desktop.
Save zhaozhiming/f4a082168f4d82876a50dc6c0ba7e8b5 to your computer and use it in GitHub Desktop.
Dockerfile for react native and android
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