Skip to content

Better image for local #21

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 15 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 28 additions & 67 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,78 +1,39 @@
FROM cimg/android:2022.12.1-node

RUN echo y | ${CMDLINE_TOOLS_ROOT}/sdkmanager "cmake;3.6.4111459" && \
echo y | ${CMDLINE_TOOLS_ROOT}/sdkmanager "cmake;3.10.2.4988404"

# Setup LTS release
ENV NDK_LTS_VERSION "21.4.7075529"
ENV ANDROID_NDK_HOME "/home/circleci/android-sdk/ndk/${NDK_LTS_VERSION}"
RUN echo y | ${CMDLINE_TOOLS_ROOT}/sdkmanager "ndk;${NDK_LTS_VERSION}"

# Setup build tools
ENV BUILD_TOOLS_VERSION "30.0.3"
RUN echo y | ${CMDLINE_TOOLS_ROOT}/sdkmanager "build-tools;${BUILD_TOOLS_VERSION}"

ENV ANDROID_NDK_ROOT "${ANDROID_NDK_HOME}"
ENV PATH "${ANDROID_NDK_HOME}:${PATH}"
FROM ubuntu:24.04

USER root

RUN groupadd --gid 1000 node \
&& useradd --uid 1000 --gid node --shell /bin/bash --create-home node \
&& echo 'node ALL=NOPASSWD: ALL' >> /etc/sudoers.d/50-circleci \
&& echo 'Defaults env_keep += "DEBIAN_FRONTEND"' >> /etc/sudoers.d/env_keep

USER node
ENV PATH /home/node/.local/bin:/home/node/bin:${PATH}

CMD ["/bin/sh"]

# Switching user can confuse Docker's idea of $HOME, so we set it explicitly
ENV HOME /home/node

RUN sudo npm install --unsafe-perm=true --allow-root -g [email protected] @ionic/[email protected]

RUN sudo apt-get update -qq && \
DEBIAN_FRONTEND=noninteractive sudo apt-get install -y -qq --no-install-recommends \
# for ruby-dev
build-essential\
git \
vim \
# for rbenv
libssl-dev libreadline-dev zlib1g-dev \
# for postgres
libpq-dev \
&& sudo apt-get clean \
&& sudo rm -rf /var/cache/apt/archives/* \
&& sudo rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
&& sudo truncate -s 0 /var/log/*log

ENV PATH="/home/node/.rbenv/bin:/home/node/.rbenv/shims:$PATH"
# update image and install required packages
RUN apt update && apt install -y default-jdk

ENV NVM_DIR="$HOME/.nvm"
ENV NODE_VERSION="16.17.0"
ENV JAVA_HOME=/usr/lib/jvm/default-java
ENV JDK_HOME=${JAVA_HOME}
ENV JRE_HOME=${JDK_HOME}

RUN curl https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash \
&& source $NVM_DIR/nvm.sh \
&& nvm install $NODE_VERSION \
&& nvm alias default $NODE_VERSION \
&& nvm use default
# Install wget and unzip
RUN apt-get install -y wget unzip

ENV NODE_PATH="$NVM_DIR/v$NODE_VERSION/lib/node_modules"
ENV PATH="$NVM_DIR/versions/node/v$NODE_VERSION/bin:$PATH"
# Install Gradle 7.6
RUN wget https://services.gradle.org/distributions/gradle-7.6-bin.zip -P /tmp && \
unzip -d /opt/gradle /tmp/gradle-7.6-bin.zip && \
ln -s /opt/gradle/gradle-7.6/bin/gradle /usr/bin/gradle && \
rm /tmp/gradle-7.6-bin.zip

RUN sudo apt-get update && \
sudo apt-get install git curl libssl-dev libreadline-dev bison zlib1g-dev autoconf build-essential libyaml-dev libreadline-dev libncurses5-dev libffi-dev libgdbm-dev && \
bash -c "curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-installer | bash" && \
bash -c "rbenv install 3.1.4" && \
echo 'eval "$(rbenv init -)"' >> /home/node/.bashrc && \
bash -c "rbenv global 3.1.4" && \
bash -c "/home/node/.rbenv/shims/gem install bundler"
ENV ANDROID_HOME=/opt/android-sdk

RUN sudo apt-get update && sudo apt-get install python3-pip
# Install Android SDK Tools
RUN wget https://dl.google.com/android/repository/commandlinetools-linux-9123335_latest.zip -P /tmp && \
mkdir -p ${ANDROID_HOME}/cmdline-tools && \
unzip -d ${ANDROID_HOME}/cmdline-tools/temp /tmp/commandlinetools-linux-9123335_latest.zip && \
rm /tmp/commandlinetools-linux-9123335_latest.zip && \
ls -la ${ANDROID_HOME}/cmdline-tools/temp/ && \
mv ${ANDROID_HOME}/cmdline-tools/temp/cmdline-tools ${ANDROID_HOME}/cmdline-tools/latest && \
ls -la ${ANDROID_HOME}/cmdline-tools/latest/bin/ && \
rm -rf ${ANDROID_HOME}/cmdline-tools/temp

ENV JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
# Set PATH to include the bin directory of the cmdline-tools
ENV PATH=${PATH}:${ANDROID_HOME}/cmdline-tools/latest/bin

RUN java -version && gradle -v && ruby -v && node -v && pip -V
# Accept licenses and install SDK components
RUN yes | ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager --licenses && \
${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager "platform-tools" "platforms;android-30" "build-tools;30.0.3" "extras;google;m2repository" "extras;android;m2repository"

WORKDIR /home/node