繁体   English   中英

在 Docker 中运行的自定义 Azure DevOps 构建代理上安装了卷的测试容器

[英]Testcontainers with volume mounts on custom Azure DevOps build agent running in Docker

在已经在 Docker 中运行的自我管理的自定义 Azure DevOps 代理上运行一些使用 Testcontainers 的集成测试时遇到问题。

主机是 Azure 上的 Ubuntu 20.04 虚拟机。 它安装了 Docker,并运行了 2 个 docker 镜像,一个用于我们基于 Java 的构建,另一个用于基于 Angular 的构建。 在基于 Java 的内部,我们使用 Testcontainers 运行 Maven。

为构建代理本身创建的 Docker 映像基于https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/docker?view=azure-devops#linux上的文档。 它运行 Ubuntu 18.04,有一个WORKDIR /azpENTRYPOINT [ "./start.sh" ]

构建代理通过以下方式在主机上手动启动:

docker run -d --name build-agent-java-1 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e AZP_URL=https://dev.azure.com/my-organisation \
  -e AZP_TOKEN=<mytoken> \
  -e AZP_AGENT_NAME=agent-1 \ 
  custombuildagentcr.azurecr.io/ubuntu1804-java11

-v /var/run/docker.sock:/var/run/docker.sockTestcontainers 文档之后添加

这适用于某些 Testcontainers 测试,但不适用于其他测试。 更特别的是,它不适用于由 testcontainers 启动的容器需要访问已编译的类文件(存在于构建代理 docker 上)的测试。

在搜索了很多其他问题之后,我认为问题在于“内部 docker”无法“看到”“外部 docker”(构建代理)上的文件。 请参阅Docker 卷挂载在 Azure DevOps Pipeline自托管 Azure DevOps 代理卷映射中不起作用

但是,我不清楚如何准确地应用它。

我尝试在启动构建代理 Docker 时添加-v $PWD:$PWD -w $PWD (因为 Testcontainer 文档表明了这一点)。 但是,这会导致图像无法启动,因为./start.sh因为 ENTRYPOINT 不再可以在 WORKDIR 更改时解析。

我还尝试将 ENTRYPOINT 更改为使用绝对路径/azp/start.sh (并在该start.sh文件中执行cd /azp ),但这仍然不起作用。

如果我检查可用的安装,它会返回:

devops-agent-host-user@shared-devops-agent-host:~$ docker inspect build-agent-java-1 | jq '.[0].Mounts'
[
  {
    "Type": "bind",
    "Source": "/home/devops-agent-host-user",
    "Destination": "/home/devops-agent-host-user",
    "Mode": "",
    "RW": true,
    "Propagation": "rprivate"
  },
  {
    "Type": "bind",
    "Source": "/var/run/docker.sock",
    "Destination": "/var/run/docker.sock",
    "Mode": "",
    "RW": true,
    "Propagation": "rprivate"
  }
]

Azure 本身在 Docker 容器中使用 Docker 挂载卷,但不幸的是,我无法理解如何将其应用于我的情况。

我没有通用的解决方案,但是我用testcontainers-keycloak 1.9.0 解决了我的问题,因为它不再使用绑定挂载,而是将类文件复制到容器中(请参阅https://github.com)。 com/dasniko/testcontainers-keycloak/issues/44 )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM