首页 > 解决方案 > 什么是从一个容器到另一个容器的 url 服务?

问题描述

我在一个容器中的 c# 'web_dotnet' 中有应用程序,它从第二个容器中的 php 服务 'web_php' 下载数据。但是php服务的url是什么?c# 服务中的URL ' 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

标签: docker

解决方案


首先,您可以简化文件,删除不必要的网络声明和端口暴露。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 from web_dotnet

之后,如果您想web_dotnet从外部访问 ** docker-compose,则添加ports指令以使其从主机可见。


推荐阅读