expo-popcore-old/.devcontainer/Dockerfile

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"]