2016-07-04 71 views
2

我剛剛在我的機器上安裝了Docker &有一個Nginx/PHP7(FPM)/ MySQL設置工作正常,但在PHP容器上安裝了Xdebug我無法獲取它在我的主機上連接回PHPStorm。Xdebug無法連接回Docker主機

這裏是我的PHP Xdebug的配置...

zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts- 
20151012/xdebug.so 
xdebug.remote_log=/usr/local/var/log/xdebug.log 
xdebug.remote_enable=1 
xdebug.remote_host=192.168.99.1 
xdebug.remote_port=9000 
xdebug.remote_connect_back=1 
xdebug.remote_handler=dbgp 
xdebug.remote_mode=req 
xdebug.remote_autostart=true 

瀏覽時,與Xdebug的啓用Cookie組的容器,有一個連接沒有任何提示。如果我瀏覽本地託管的網站,那麼我知道PHPStorm的收聽是正確的。

在本地機器上,我可以telnet到端口9000 ...

$ telnet 192.168.99.1 9000 
Trying 192.168.99.1... 
Connected to 192.168.99.1. 
Escape character is '^]'. 
^] 
telnet> quit 
Connection closed. 

...但是我不能從任一boot2docker VM,或容器。當我嘗試它只是坐在那裏無所事事。但是,VM和容器都可以很好地ping主機。

我試過禁用我的Mac的防火牆,但仍然沒有喜悅。

我不太清楚如何禁用boot2docker虛擬機上的防火牆。

任何洞察爲什麼這不起作用將受到大大歡迎。提前致謝。

回答

0

您需要使用從Docker主機橋接到Mac的網絡。在Mac上執行ifconfig,並在其他本地網絡上查找本地IP,例如10.0.1.13。 (該細節可以通過碼頭工人的版本有所不同,但這個工作有流浪的泊塢窗主機,應該對大多數工作VM)的

+0

謝謝你的提示。我在我的無線適配器上添加了一個橋接的無線適配器,並且我可以在Docker虛擬機中看到一個新的適配器,IP地址爲192.168.1.18(主機爲192.168.1.6),但我仍然無法從遠程登錄VM或容器。你能否提供更多關於如何正確設置的細節? – TobyG

+0

你不應該需要另一座橋。你有沒有嘗試不同的端口,順便說一句? FPM可能會使用9000,因此可能會發生衝突。嘗試使用10000或類似的。您也可以在Mac上執行'nc -l 8888'並從容器中telnet以確認它獨立於xdebug運行。 – ldg

+0

原來重新生成工作的VM。我曾嘗試過其他一切。最後,我刪除了虛擬機,刪除了所有僅限主機的網絡,然後重新創建虛擬機。如果一切都失敗......重啓! – TobyG

1

Xdebug的推薦配置集裝箱內部:

zend_extension = xdebug.so 
xdebug.remote_enable = 1 
xdebug.remote_connect_back = 0 
xdebug.remote_host = docker.for.mac.localhost 
xdebug.remote_port = 9000 
xdebug.remote_handler = dbgp 
xdebug.remote_mode = req 
xdebug.remote_autostart = 1 
xdebug.idekey = PHPSTORM 

由於碼頭工人,17.06,你可以通過靜態主機名訪問容器內Mac上託管的服務:docker.for.mac.localhost

我想從容器連接到主機上的服務?
Mac的IP地址有變化(如果沒有網絡訪問,則爲無)。從17.06開始,我們的建議是連接到特殊的僅限Mac的DNS名稱docker.for.mac.localhost,該名稱解析爲主機使用的內部IP地址。

看到https://docs.docker.com/docker-for-mac/networking/#i-cannot-ping-my-containers