Creation of Dockerfile for Android GitLab CI



我正在为Runner创建我自己的Dockerfile,它将作为Android项目运行程序在Gitlab CI中工作。问题是,我即将把物理设备连接到一台机器上,我将在这台机器上部署那个跑步者。和Linux机器一样,我试图将51-android.rules添加到/etc/dev/rules.d中,如本教程中所述:Udev Setup在执行docker build .命令时,我得到错误:

/bin/sh: 1: udevadm: not found

我的问题是:

  1. 1) 有可能将物理安卓设备连接到运行操作系统的docker吗
  2. 2) 如果1)是,我的错误在哪里

有问题的码头文件部分:

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系统,所以你不能像以前那样使用服务。

我不知道是否有可能实现您想要做的事情,但我认为您希望在主机上使用udev规则,并在启动设备时添加设备:https://docs.docker.com/engine/reference/commandline/run/#add-主机设备到容器设备

此外,您可能还想阅读https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#/apt-得到每个RUN都会创建一个新层,只是信息添加到容器中。

话虽如此,您可能希望将adb devices作为容器的ENTRYPOINTCMD

最新更新