如何使用从另一个docker容器运行在docker容器上的模拟器?

如何使用从另一个docker容器运行在docker容器上的模拟器?,docker,jenkins,docker-compose,android-emulator,adb,Docker,Jenkins,Docker Compose,Android Emulator,Adb,为了在任何jenkins代理中执行我的测试,而不需要任何额外的设置,我想让一切都在Docker中运行 我的第一种方法是使用一个基本映像,其中包含我所需要的所有内容,即我的应用程序代码、AndroidSDK、Flatter、Emulator和一个Emulator映像。遗憾的是,图像大小超过了10GB,所以我决定分担责任: 我的基本映像将只包含Androi sdk。以下图像将从中继承: 图1将我的应用程序安装了一个卷,并为了构建/测试而抖动 图2将运行一个模拟器 这是我的设置的docker组件:

为了在任何jenkins代理中执行我的测试,而不需要任何额外的设置,我想让一切都在Docker中运行

我的第一种方法是使用一个基本映像,其中包含我所需要的所有内容,即我的应用程序代码、AndroidSDK、Flatter、Emulator和一个Emulator映像。遗憾的是,图像大小超过了10GB,所以我决定分担责任:

  • 我的基本映像将只包含Androi sdk。以下图像将从中继承:

  • 图1将我的应用程序安装了一个卷,并为了构建/测试而抖动

  • 图2将运行一个模拟器

这是我的设置的docker组件:

---

version: '3'

services:
  flutter:
    build:
      args:
        - "FLUTTER_CHANNEL=stable"
        - "FLUTTER_VERSION=1.2.1"
      context: .
      dockerfile: DockerfileFlutter
    volumes:
      - .:/app
    working_dir: /app
    command: ["flutter", "test"]

  emulator:
    build:
      context: .
      dockerfile: DockerfileAndroidEmulator
    container_name: "emulator"
    privileged: true
    extra_hosts:
      - "emulator:127.0.0.1"
    depends_on:
      - flutter
    links:
      - flutter
    command: ["/opt/android-sdk-linux/tools/emulator", "@flutter_emulator", "-no-skin", "-no-audio", "-no-window"]

我面临的问题是,我无法使用正在运行的仿真器,因为当我在服务
flatter
中执行adb设备时,我看不到正在服务
emulator
中运行的仿真器

我试图通过adb connect进行连接,但不起作用。有没有什么可能的解决方案我遗漏了或者我做错了


提前感谢。

需要满足以下几个先决条件:

  • adb服务器正在“emulator”容器上运行
    adb启动服务器
  • adb服务器查看您的模拟器
    adb设备
  • adb服务器侦听端口5037
  • 您可以从“颤振”容器到达此端口-检查docker网络

进一步阅读:

需要满足以下几个先决条件:

  • adb服务器正在“emulator”容器上运行
    adb启动服务器
  • adb服务器查看您的模拟器
    adb设备
  • adb服务器侦听端口5037
  • 您可以从“颤振”容器到达此端口-检查docker网络
进一步阅读: