And-IDE / Dockerfile
Mrgf9993's picture
Update Dockerfile
f9f30ee verified
FROM ubuntu:22.04
# 1. Environment Variables
ENV DEBIAN_FRONTEND=noninteractive
ENV ANDROID_SDK_ROOT=/opt/android-sdk
ENV FLUTTER_HOME=/opt/flutter
ENV PATH="${FLUTTER_HOME}/bin:${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin:${ANDROID_SDK_ROOT}/platform-tools:${PATH}"
# 2. Install System Dependencies & Desktop Environment
# We need a lightweight desktop (XFCE) and VNC to actually see Android Studio
RUN apt-get update && apt-get install -y \
curl git unzip xz-utils zip libglu1-mesa wget openjdk-17-jdk \
xfce4 xfce4-goodies tightvncserver novnc python3-websockify \
libgtk-3-0 libcanberra-gtk-module libdbus-glib-1-2 libnss3 \
&& rm -rf /var/lib/apt/lists/*
# 3. Install Flutter SDK
RUN git clone https://github.com/flutter/flutter.git ${FLUTTER_HOME}
RUN chown -R root:root ${FLUTTER_HOME} && chmod -R 777 ${FLUTTER_HOME}
# 4. Install Android SDK Command Line Tools
RUN mkdir -p ${ANDROID_SDK_ROOT}/cmdline-tools && \
wget https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip -O /tmp/tools.zip && \
unzip /tmp/tools.zip -d ${ANDROID_SDK_ROOT}/cmdline-tools && \
mv ${ANDROID_SDK_ROOT}/cmdline-tools/cmdline-tools ${ANDROID_SDK_ROOT}/cmdline-tools/latest && \
rm /tmp/tools.zip
# 5. Install Android Studio
# We download the stable Linux tarball
RUN wget https://redirector.gvt1.com/edgedl/android/studio/ide-zips/2023.2.1.25/android-studio-2023.2.1.25-linux.tar.gz -O /tmp/studio.tar.gz && \
tar -xzf /tmp/studio.tar.gz -C /opt && \
rm /tmp/studio.tar.gz
# 6. Setup User
RUN useradd -m -u 1000 user
USER user
WORKDIR /home/user
# 7. Configure Android SDK & Licenses
RUN yes | sdkmanager --licenses && \
sdkmanager "platform-tools" "platforms;android-34" "build-tools;34.0.0"
# 8. Flutter Pre-cache
RUN flutter config --android-sdk ${ANDROID_SDK_ROOT} && \
flutter precache
# 9. VNC & Display Setup
# Set a default password for VNC (change 'password' to something else)
RUN mkdir /home/user/.vnc && \
echo "password" | vncpass -f > /home/user/.vnc/passwd && \
chmod 600 /home/user/.vnc/passwd
# 10. Port for NoVNC (Web browser access)
EXPOSE 6080
# Start a VNC server and the NoVNC proxy to view the desktop in a browser
CMD vncserver :1 -geometry 1280x800 -depth 24 && \
/usr/share/novnc/utils/launch.sh --vnc localhost:5901 --listen 6080