如何在另一个 Docker 容器中使用运行在 Docker 容器中的模拟器?

3
为了在任何Jenkins代理上执行我的测试而不需要额外设置,我希望一切都在Docker中运行。 我的第一个方法是使用一个包含所有所需内容的基础映像,即我的应用程序代码、Android SDK、Flutter、模拟器和模拟器映像。不幸的是,映像大小超过了10 GB,因此我决定分散责任:
- 我的基础映像将仅包含Androi sdk。以下映像将从它继承: - 映像1将具有我的应用程序,并挂载一个卷以及Flutter以进行构建/测试。 - 映像2将运行一个模拟器。
这是我的设置的docker-compose:
---

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"]

我面临的问题是,我无法使用正在运行的模拟器,因为当我在flutter服务中执行adb devices时,我看不到正在emulator服务中运行的模拟器。

我尝试通过adb connect连接,但是这并没有起作用。是否有可能我错过了任何可能的解决方案或者我做错了什么?

提前感谢您的帮助。

1个回答

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接