У меня работает служба WCF localhost:56000
в режиме отладки из проекта Visual Studio. У меня также есть приложение LAMP в контейнере Docker на localhost:8080
, В моем файле configuration.php у меня есть глобально доступная переменная с именем SoapUri
это установлено к конечной точке wsdl public $SoapUri = 'https://[WCF-server-address]/serviceName.svc?wsdl';
,
Это работает в производстве, но установив $ SoapUri в public $SoapUri = 'http://localhost:56000/serviceName.svc?wsdl';
не работает.
Я понимаю, что localhost ссылается на localhost внутри контейнера, и я мог бы использовать специальное имя DNS ‘Host.docker.internal’ ссылаться на хост контейнера, но изменив $ SoapUri на public $SoapUri = 'http://host.docker.internal:56000/serviceName.svc?wsdl';
тоже не работает.
Я также попробовал это:
C:\Users\userName>ipconfig
Windows IP Configuration
Ethernet adapter vEthernet (DockerNAT):
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::cd21:7994:1a5a:7cc0%3
IPv4 Address. . . . . . . . . . . : 10.0.75.1
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
Затем установка на public $SoapUri = 'http://10.0.75.1:56000/serviceName.svc?wsdl';
Это казалось самым многообещающим, потому что я не сразу выбрасываю эту ошибку …
php_1 | [20-Jul-2018 19:06:27] WARNING: [pool www] child 5 said into stderr: "NOTICE: PHP message: PHP Fatal error: SOAP-ERROR: Parsing WSDL: Couldn't load from 'host.docker.internal:56000/serviceName.svc?wsdl' : failed to load external entity "host.docker.internal:56000/serviceName.svc?wsdl""
…но вместо этого сначала тайм-аут, а затем выдает ошибку, но я думаю, что это вводит в заблуждение.
Очевидно, что я что-то здесь упускаю и не совсем понимаю, что происходит, когда я пытаюсь получить локальный адрес wsdl из контейнера.
Задача ещё не решена.
Других решений пока нет …