2016-11-09 134 views
0

我創建了一個開放端口8080的nginx容器:80 所以我可以從主機訪問它。docker nginx和php,php無法連接到本地主機

它連接到PHP具有打開端口9000 fpm的容器:9000

nginx的成功用PHP運行。

我的問題是,PHP試圖訪問本地主機:8080 但問題是,PHP本地主機:8080是無效的,它需要連接到Nginx容器。

這裏是我的wordpress網站的錯誤: 你可以看到的東西是時髦有... 下面我會附上我的搬運工,compose.yml


下載從http://localhost:8080/wp-content/themes/realtyspace/plugins/advanced-custom-fields-pro.zip安裝包...

下載失敗。捲曲錯誤7:無法連接到本地主機端口8080:連接被拒絕


泊塢窗,compose.yml

version: '2' 
services: 
    my-nginx: 
    build: . 
    volumes: 
     - ./../:/var/www/html 
    ports: 
     - "8080:80" 
    links: 
     - my-php 

    my-php: 
    build: 
     context: . 
     dockerfile: Dockerfile.php-fpm 
     volumes: 
     - ./../:/var/www/html 
     ports: 
     - "9000:9000" 
     links: 
     - my-mysql 

    my-mysql: 
    image: mariadb:5.5 
    volumes: 
     - /var/lib/mysql 
    environment: 
     MYSQL_ROOT_PASSWORD: wp 
     MYSQL_DATABASE: wp 
     MYSQL_USER: wp 
     MYSQL_PASSWORD: wp 
+0

你是直接在Linux上運行還是使用Docker for Windows/Mac? – R0MANARMY

+0

我在Mac上使用docker,感謝 –

+0

因此,您有一個循環引用,因爲nginx需要與php和php交談來與nginx交談? – R0MANARMY

回答

0

使用泊塢窗的內部網絡和配置PHP訪問http://my-nginx:80

localhost將解析爲php容器本身的隔離IP,而不是正在運行所有內容的Docker主機。並且試圖通過http://dockerhost:8080將導致不可移植的docker-compose.yml,並且可能會出現iptables防火牆和nat規則,這些規則比他們的價值更麻煩。使用v2撰寫文件的價值在於,您可以通過每個容器的DNS解析獲得Docker內部的獨立網絡,以便彼此協作。

+0

但php代碼試圖訪問該網址,只是因爲網址沒有?如果我已經給它一個example.com的url,它只會嘗試從那裏獲取否? –

+0

我不確定你正在運行什麼樣的PHP代碼,在你的問題中需要更多的細節。 – BMitch