webservice是否可以通过docker上的容器名称读取apiservice。http://container_name:port

webservice是否可以通过docker上的容器名称读取apiservice。http://container_name:port,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我是docker新手,我在docker compose文件中编写了一个web服务和web中使用的其他服务。我想知道是否可以通过容器名称访问web服务的服务(例如api服务)。 喜欢http://container_name:8080. 容器名称在docker compose文件中指定,docker容器上的web服务可以通过http://localhost:port. 我想将localhost替换为container_name,docker可以通过一些配置来进行映射吗?我试过依赖和链接,但都不起作

我是docker新手,我在docker compose文件中编写了一个web服务和web中使用的其他服务。我想知道是否可以通过容器名称访问web服务的服务(例如api服务)。 喜欢http://container_name:8080. 容器名称在docker compose文件中指定,docker容器上的web服务可以通过http://localhost:port. 我想将localhost替换为container_name,docker可以通过一些配置来进行映射吗?我试过依赖和链接,但都不起作用

我的docker compose.yml的一部分:

version: "3.7" services: mywebservice: container_name: mywebservice ports: - "8080:80" depends_on: - myapiservice myapiservice: container_name:myapiservice ports: - "8081:80" 版本:“3.7” 服务: mywebservice: 容器名称:mywebservice 端口: - "8080:80" 取决于: -myapiservice Myapis服务: 容器名称:myapiservice 端口: - "8081:80"
您可以通过主机文件将容器名称解析为容器ip

192.168.10.10   mywebservice

您可以将此文件保存在应用程序源代码中,并让docker将其复制到
/etc

谢谢!这解决了问题,但这里还有另一个问题-这只是建立了一个名称-地址映射,他们与docker compose文件的容器名称无关。它们不是同一件事:每次我更改容器名称时,我也必须更改主机文件中的容器名称,如果我使用另一台pc拉取图像和组件,我还必须使用docker compose中的
命令
选项重新设置主机,并从docker compose脚本中创建
主机
文件。通过这种方式,您只能在一个地方拥有名称。容器IP无法访问,除非在一个非常特定的Docker/host设置中,我不建议您查找它。对…这可以解决问题,但不推荐,这应该可以正常工作;您可以删除
container\u name:
,它仍然可以工作。Docker文档中有更多详细信息。您是否试图从
mywebservice
内部调用
myapiservice
并生成呈现页面;或者说,
mywebservice
正在为一个基于浏览器的应用程序提供服务,该应用程序从Docker空间外部进行获取调用?是的,实际上我正在尝试从mywebservice内部调用myapiservice。我想用Docker文件中配置的某个名称替换我url中的本地主机
mywebservice
应该能够可靠地调用
http://myapiservice
(在默认的HTTP端口80上)。如果这不起作用,您能否提供进行调用的代码,以及您得到的实际错误?