为 Android GitLab CI 创建 Dockerfile
Creation of Dockerfile for Android GitLab CI
我正在为 Runner 创建我自己的 Dockerfile,它即将在 Gitlab CI 中作为 Android 项目运行器工作。问题是,我要将物理设备连接到一台机器,我将在这台机器上部署该跑步者。通常使用 Linux 机器,我试图将 51-android.rules 添加到 /etc/dev/rules.d 中,如本教程所示:Udev Setup
在 docker build .
命令执行期间,出现错误:
/bin/sh: 1: udevadm: not found
我的问题是:
- 1) 是否可以将物理 Android 设备连接到 docker-运行 OS?
- 2) 如果1) 是,我的错误在哪里?
有问题的 docker 文件部分:
FROM ubuntu:latest
#Ubuntu setup
RUN apt-get update
RUN apt-get install -y wget
...
#Setup Android Udev Rules
RUN wget https://raw.githubusercontent.com/M0Rf30/android-udev-rules/master/51-android.rules
RUN mv -y `pwd`/51-android.rules /etc/udev/rules.d
RUN chmod a+r /etc/udev/rules.d/51-android.rules
RUN udevadm control --reload-rules
RUN service udev restart
RUN usermod -a -G plugdev `whoami`
RUN adb kill-server
RUN adb devices
#Cleaning
RUN apt-get clean
Docker 的理念是每个容器有一个进程 运行。通常没有Init System,所以你不能像你习惯的那样使用服务。
我不知道是否有可能实现你想要做的事情,但我认为你想要主机上的 udev 规则并在启动时添加设备:https://docs.docker.com/engine/reference/commandline/run/#add-host-device-to-container-device
您可能还想阅读 https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#/apt-get
每 RUN
创建一个新层,仅 添加 信息到容器。
话虽如此,您可能希望将 adb devices
作为容器的 ENTRYPOINT
或 CMD
。
我正在为 Runner 创建我自己的 Dockerfile,它即将在 Gitlab CI 中作为 Android 项目运行器工作。问题是,我要将物理设备连接到一台机器,我将在这台机器上部署该跑步者。通常使用 Linux 机器,我试图将 51-android.rules 添加到 /etc/dev/rules.d 中,如本教程所示:Udev Setup
在 docker build .
命令执行期间,出现错误:
/bin/sh: 1: udevadm: not found
我的问题是:
- 1) 是否可以将物理 Android 设备连接到 docker-运行 OS?
- 2) 如果1) 是,我的错误在哪里?
有问题的 docker 文件部分:
FROM ubuntu:latest
#Ubuntu setup
RUN apt-get update
RUN apt-get install -y wget
...
#Setup Android Udev Rules
RUN wget https://raw.githubusercontent.com/M0Rf30/android-udev-rules/master/51-android.rules
RUN mv -y `pwd`/51-android.rules /etc/udev/rules.d
RUN chmod a+r /etc/udev/rules.d/51-android.rules
RUN udevadm control --reload-rules
RUN service udev restart
RUN usermod -a -G plugdev `whoami`
RUN adb kill-server
RUN adb devices
#Cleaning
RUN apt-get clean
Docker 的理念是每个容器有一个进程 运行。通常没有Init System,所以你不能像你习惯的那样使用服务。
我不知道是否有可能实现你想要做的事情,但我认为你想要主机上的 udev 规则并在启动时添加设备:https://docs.docker.com/engine/reference/commandline/run/#add-host-device-to-container-device
您可能还想阅读 https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#/apt-get
每 RUN
创建一个新层,仅 添加 信息到容器。
话虽如此,您可能希望将 adb devices
作为容器的 ENTRYPOINT
或 CMD
。