Skip to content

Commit

Permalink
Optimized Android images and replaced redir by Socat
Browse files Browse the repository at this point in the history
  • Loading branch information
HQarroum committed Mar 14, 2023
1 parent f83cb18 commit 7a3b901
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 1,182 deletions.
29 changes: 11 additions & 18 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,28 +5,20 @@ LABEL maintainer "Halim Qarroum <[email protected]>"
LABEL description "A Docker image allowing to run an Android emulator"
LABEL version "1.0.0"

# `redir.c` will be used to redirect
# localhost ADB ports to the container interface.
COPY deps/redir/redir.c /usr/src/redir.c

# Installing required packages.
RUN apk update && \
apk upgrade && \
apk add --no-cache \
alpine-sdk \
bash \
unzip \
wget \
libvirt-daemon \
dbus \
polkit \
socat \
virt-manager && \
# Compile `redir`.
gcc /usr/src/redir.c -o /usr/bin/redir && \
strip /usr/bin/redir && \
# Cleanup APK.
apk del alpine-sdk && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /var/cache/apk/*
rm -rf /tmp/* /var/tmp/* /var/cache/apk/*

# Arguments that can be overriden at build-time.
ARG INSTALL_ANDROID_SDK=1
Expand All @@ -49,7 +41,7 @@ ENV ANDROID_SDK_ROOT=/opt/android \
QTWEBENGINE_DISABLE_SANDBOX=1 \
ANDROID_EMULATOR_WAIT_TIME_BEFORE_KILL=10

# Exporting environment variables for keeping in the path
# Exporting environment variables to keep in the path
# Android SDK binaries and shared libraries.
ENV PATH "${PATH}:${ANDROID_SDK_ROOT}/platform-tools"
ENV PATH "${PATH}:${ANDROID_SDK_ROOT}/emulator"
Expand All @@ -70,16 +62,17 @@ RUN mkdir /root/.android/ && \
# Exporting ADB keys.
COPY keys/* /root/.android/

# Copy the startup scripts.
COPY scripts/* /opt/

# Make the scripts executable.
RUN chmod +x /opt/*.sh

# This layer will download the Android command-line tools
# The following layers will download the Android command-line tools
# to install the Android SDK, emulator and system images.
# It will then install the Android SDK and emulator.
COPY scripts/install-sdk.sh /opt/
RUN chmod +x /opt/install-sdk.sh
RUN /opt/install-sdk.sh

# Copy the container scripts in the image.
COPY scripts/start-emulator.sh /opt/
COPY scripts/emulator-monitoring.sh /opt/
RUN chmod +x /opt/*.sh

# Set the entrypoint
ENTRYPOINT ["/opt/start-emulator.sh"]
29 changes: 11 additions & 18 deletions Dockerfile.gpu
Original file line number Diff line number Diff line change
@@ -1,34 +1,26 @@
FROM nvidia/cuda:12.1.0-runtime-ubuntu22.04
FROM nvidia/cuda:12.1.0-base-ubuntu22.04

# Docker labels.
LABEL maintainer "Halim Qarroum <[email protected]>"
LABEL description "A Docker image allowing to run an Android emulator"
LABEL version "1.1.0"

# `redir.c` will be used to redirect
# localhost ADB ports to the container interface.
COPY deps/redir/redir.c /usr/src/redir.c

# Installing required packages.
RUN apt update -y && \
apt install -y --no-install-recommends \
build-essential \
DEBIAN_FRONTEND=noninteractive apt install -y --no-install-recommends \
bash \
unzip \
wget \
libvirt-daemon \
dbus \
openjdk-11-jdk \
ca-certificates-java \
virt-manager \
libvulkan1 \
xvfb \
libgl1-mesa-glx \
libgl1-mesa-dri \
socat \
iproute2 && \
# Compile `redir`.
gcc /usr/src/redir.c -o /usr/bin/redir && \
strip /usr/bin/redir && \
rm -rf /var/lib/apt/lists/*

# Arguments that can be overriden at build-time.
Expand Down Expand Up @@ -73,16 +65,17 @@ RUN mkdir /root/.android/ && \
# Exporting ADB keys.
COPY keys/* /root/.android/

# Copy the startup scripts.
COPY scripts/* /opt/

# Make the scripts executable.
RUN chmod +x /opt/*.sh

# This layer will download the Android command-line tools
# The following layers will download the Android command-line tools
# to install the Android SDK, emulator and system images.
# It will then install the Android SDK and emulator.
COPY scripts/install-sdk.sh /opt/
RUN chmod +x /opt/install-sdk.sh
RUN /opt/install-sdk.sh

# Copy the container scripts in the image.
COPY scripts/start-emulator.sh /opt/
COPY scripts/emulator-monitoring.sh /opt/
RUN chmod +x /opt/*.sh

# Set the entrypoint
ENTRYPOINT ["/opt/start-emulator.sh"]
Loading

0 comments on commit 7a3b901

Please sign in to comment.