我在一个容器中的c#'web_dotnet'中有应用程序,该应用程序从第二个容器中的php服务'web_php'下载数据。但是什么是php服务的url? c#服务中的网址'http://web_php:80'不起作用。那是我的docker-compose.yml:
version: '3.5'
services:
web_php:
image: php:7.2.2-apache
container_name: my_php_container
volumes:
- ./php/:/var/www/html/
ports:
- 3000:80
networks:
- mynet
web_dotnet:
build: .
container_name: my_dotnet_container
ports:
- 2000:80
networks:
- mynet
networks:
mynet:
name: xyz_net
driver: bridge
答案 0 :(得分:2)
首先,您可以简化文件,删除不必要的网络声明和端口暴露。 docker-compose
为您创建默认的用户定义的桥接网络,并将所有服务链接到该网络-无需手动进行。同样在网络内部,所有端口都将自动暴露给服务。
第二,删除container_name
。你在混乱自己。服务的默认主机名等于服务名。
version: '3.5'
services:
web_php:
image: php:7.2.2-apache
volumes:
- ./php/:/var/www/html/
web_dotnet:
build: .
现在,在清除所有无用的东西之后,只需从web_php:80
调用web_dotnet
。
之后,如果您想从外部访问web_dotnet
** docker-compose
,则可以添加ports
指令以使其在主机上可见。