2016-11-09 96 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