126 lines
3.7 KiB
Docker
126 lines
3.7 KiB
Docker
# Ubuntu 20.04 from GitHub mirror
|
|
FROM ubuntu:20.04
|
|
|
|
LABEL maintainer="vitor.roberto3022@gmail.com"
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
# Use Alibaba Cloud mirror for Ubuntu packages
|
|
RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list && \
|
|
sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
|
|
|
|
# Update the package list and install dependencies
|
|
RUN apt-get update && \
|
|
apt-get install -y \
|
|
curl \
|
|
gnupg \
|
|
wget \
|
|
unzip \
|
|
make \
|
|
sudo \
|
|
git \
|
|
build-essential
|
|
|
|
# Add NodeSource APT repository for Node.js (keep for compatibility)
|
|
RUN curl -sL https://deb.nodesource.com/setup_20.x | bash -
|
|
|
|
# Install Node.js (include for some tools that still require it)
|
|
RUN apt-get install -y nodejs
|
|
|
|
# Install Bun using official installation script
|
|
RUN curl -fsSL https://bun.sh/install | bash
|
|
|
|
# Set Bun environment variables (official installation location)
|
|
ENV BUN_INSTALL="/root/.bun"
|
|
ENV PATH="$BUN_INSTALL/bin:$PATH"
|
|
|
|
# Install expo dependencies with Bun
|
|
RUN bun install -g eas-cli
|
|
RUN bun install -g sharp-cli
|
|
|
|
# Setup folder to store the expo apps
|
|
RUN mkdir -p /home/expo_apps/
|
|
|
|
# Install android studio and java dependencies
|
|
RUN dpkg --add-architecture i386
|
|
RUN apt-get update && apt-get install -y \
|
|
libc6:i386 \
|
|
libncurses5:i386 \
|
|
libstdc++6:i386 \
|
|
lib32z1 \
|
|
libbz2-1.0:i386 \
|
|
libxrender1 \
|
|
libxtst6 \
|
|
libxi6 \
|
|
libfreetype6 \
|
|
libxft2 \
|
|
xz-utils \
|
|
qemu \
|
|
qemu-kvm \
|
|
libvirt-daemon-system \
|
|
libvirt-clients \
|
|
bridge-utils \
|
|
libnotify4 \
|
|
libglu1-mesa \
|
|
libqt5widgets5 \
|
|
openjdk-17-jdk \
|
|
xvfb
|
|
|
|
# Get Android SDK command line tools from official Google source
|
|
RUN wget https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip
|
|
RUN unzip commandlinetools-linux-11076708_latest.zip
|
|
RUN mkdir -p /android-sdk-linux/cmdline-tools
|
|
RUN mv cmdline-tools /android-sdk-linux/cmdline-tools/latest
|
|
|
|
# Get NDK version 27.1.12297006 from official Google source
|
|
RUN wget https://dl.google.com/android/repository/android-ndk-r27-linux.zip
|
|
RUN unzip android-ndk-r27-linux.zip
|
|
|
|
# Set environment variables
|
|
ENV ANDROID_HOME=/android-sdk-linux
|
|
ENV ANDROID_SDK_ROOT=/android-sdk-linux
|
|
ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
|
|
ENV ANDROID_NDK_HOME=/android-ndk-r27
|
|
ENV PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools
|
|
|
|
# Accept Android SDK licenses
|
|
RUN yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --licenses
|
|
|
|
# Install required Android SDK components for minSDK 24, targetSDK 36
|
|
RUN $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager \
|
|
"platform-tools" \
|
|
"platforms;android-36" \
|
|
"platforms;android-24" \
|
|
"build-tools;36.0.0" \
|
|
"build-tools;24.0.3"
|
|
|
|
# Create workspace directory
|
|
WORKDIR /workspace
|
|
|
|
# Configure Gradle for better performance
|
|
RUN mkdir -p ~/.gradle
|
|
RUN echo 'org.gradle.daemon=true' >> ~/.gradle/gradle.properties
|
|
RUN echo 'org.gradle.parallel=true' >> ~/.gradle/gradle.properties
|
|
RUN echo 'org.gradle.configureondemand=true' >> ~/.gradle/gradle.properties
|
|
|
|
# Set environment variables for root user
|
|
ENV ANDROID_HOME=/android-sdk-linux
|
|
ENV ANDROID_SDK_ROOT=/android-sdk-linux
|
|
ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
|
|
ENV ANDROID_NDK_HOME=/android-ndk-r27
|
|
ENV BUN_INSTALL="/root/.bun"
|
|
ENV PATH="$BUN_INSTALL/bin:$JAVA_HOME/bin:$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools"
|
|
|
|
# Verify installations
|
|
RUN java -version
|
|
RUN node --version
|
|
RUN npm --version
|
|
RUN bun --version
|
|
RUN eas --version
|
|
RUN $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --list
|
|
|
|
# Expose default ports
|
|
EXPOSE 8081 19000 19001 19002
|
|
|
|
# Default command
|
|
CMD ["sleep", "infinity"] |