当前位置: 首页 > 知识库问答 >
问题:

是否有其他人在使用主机时遇到问题。docker。azure管道内部

龙洛城
2023-03-14

最近好像停止工作了,我用docker comment运行一些微服务,以便单元测试可以使用它们,其中一些微服务相互通信,因此它们使用一个配置值作为基URL,这是我docker-compose.yml的一个例子

version: '3.8'

services:

  microsa:
    container_name: api.a
    image: *****
    restart: always
    ports:
      - "20001:80"

  microsb:
    container_name: api.b
    image: *****
    restart: always
    ports:
      - "20002:80"
    depends_on:
      microsa:
        condition: service_healthy
    environment:
      - ApiUrl=http://host.docker.internal:20001/api/v1/test

这在我的Windows机器docker桌面上非常有效,但在ubuntu最新版本或Windows最新版本的Azure管道中都不起作用

- task: DockerCompose@0
  displayName: 'Run docker compose for unit tests'
  inputs:
    containerregistrytype: 'Azure Container Registry'
    azureSubscription: ${{ parameters.azureResourceManagerConnection }}
    azureContainerRegistry: ${{ parameters.acrUrl }}
    dockerComposeFile: 'docker-compose.yml'
    action: 'Run services'

当api。b尝试调用api。a、 我得到以下例外:

不知道这样的主机。(主持人。docker。内部:20001)

使用超文本传输协议://microsa: 20001/...会出现以下错误:

连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机没有响应。(microsa:20001)

我也试过了http://localhost:20001/...

我还确认microsa可以直接访问,因此该容器中没有错误。

我也尝试过通过AzureCLI@2运行docker-composeup,而不是DockerCompose@0相同的结果

共有2个答案

巫化
2023-03-14

我不知道为什么http://host.docker.internal:20001现在不工作了,尽管我确信它过去是。。。

但是,使用超文本传输协议://microsa/...(没有端口号)确实有效。

尉迟子民
2023-03-14

我遇到了相同的问题,但无法使用服务dns名称,因为我正在依赖项和测试项目之间共享一个配置文件,其中包含docker compose文件中定义的各种服务的连接字符串。测试项目(没有在docker compose中运行)也需要访问其中一些服务。

为了解决这个问题,我所要做的就是在管道的开头添加一个bash脚本,该脚本将向hosts文件添加一条新记录:

steps:
- bash: |
   echo '127.0.0.1 host.docker.internal' | sudo tee -a /etc/hosts
   
  displayName: 'Update Hosts File'
 类似资料:
  • 使用youtube的API检查实时用户对我不起作用。 https://www.googleapis.com/youtube/v3/search?part=snippet 删除channelId或eventType的工作,但这不是我要找的,这可能是youtubes的一面或什么?

  • 我目前正在向aws kinesis stream发送一系列xml消息,我已经在不同的项目中使用了它,所以我很有信心这一点是可行的。然后,我编写了一个lambda来处理从kinesis流到kinesis firehose的事件: 我已将kinesis流设置为lamdba触发器,并将批大小设置为1,起始位置设置为最新。 对于驱动消防软管,我有以下配置: 我发送了162个事件,我从s3中读取它们,最多的

  • 当我添加timestamp变量时,bat文件中断。我尝试了一些不同的方法,但我不确定为什么添加timestamp变量会破坏它。

  • 这是一个问题:如果数组的每个元素小于或等于下一个元素,数组将被排序(按升序)。 编写一个名为isSorted的布尔值方法,该方法接受整数数组和数组中的元素数,并返回数组是否已排序。 在显示代码之前:我的逻辑是if-else if and-else语句应该首先确定数组的大小是0、1还是2。这是因为当大小等于1或2时,程序必须中断。当大小大于2时,程序应检查arr[size-1] 我知道循环更好我只是

  • 我使用的是JAX-RS注解,但我遇到了@BeanParam的问题。我用的是Wildfly-Swarm和maven。以下几行是我错误的一部分:

  • 当我运行此命令时 uvicorn应用程序。主:应用程序--主机0.0.0.0--端口8000--重新加载 我得到这个错误 SQL炼金术。exc.OperationalError:(pymysql.err.OperationalError)(2003,“无法连接到“0.0.0.0”上的MySQL服务器([WinError 10049]请求的地址在其上下文中无效)”)(此错误的背景信息位于:http: