varnish和wordpress之间的泊坞窗链接不工作

这是我的docker-compose文件:

version: '2' services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: wordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depends_on: - db image: wordpress:latest ports: - "8000:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_PASSWORD: wordpress varnish: image: eeacms/varnish depends_on: - wordpress ports: - 9000:6081 environment: DNS_ENABLED: "true" BACKENDS: wordpress BACKENDS_PORT: 80 volumes: db_data: 

wordpress运行在0.0.0.0:8080172.17.0.1:8080

但是容器的/ etc / hosts就是这样的

 root@4cc3dc214d69:/# cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.3 wordpress fd3f01c29d6a dockoor_wordpress_1 172.17.0.3 wordpress_1 fd3f01c29d6a dockoor_wordpress_1 172.17.0.3 dockoor_wordpress_1 fd3f01c29d6a 172.17.0.4 4cc3dc214d69 

varnish正在将wordpress映射到172.17.0.3这就是为什么试图访问0.0.0.0:8000我得到

 Error 503 Backend fetch failed Backend fetch failed Guru Meditation: XID: 3 Varnish cache server 

有人可以指出我的撰写文件有什么问题吗?

PSdocker – 撰写日志显示,清漆确实打了蠕虫,但它得到了302响应。

 02 338 "-" "-" wordpress_1 | 172.17.0.4 - - [25/Mar/2017:10:45:19 +0000] "GET / HTTP/1.1" 302 338 "-" "-" wordpress_1 | 172.17.0.4 - - [25/Mar/2017:10:45:20 +0000] "GET / HTTP/1.1" 302 338 "-" "-" wordpress_1 | 172.17.0.4 - - [25/Mar/2017:10:45:21 +0000] "GET / HTTP/1.1" 302 338 "-" "-" wordpress_1 | 172.17.0.4 - - [25/Mar/2017:10:45:22 +0000] "GET / HTTP/1.1" 302 338 "-" "-" wordpress_1 | 172.17.0.4 - - [25/Mar/2017:10:45:23 +0000] "GET / HTTP/1.1" 302 338 "-" "-" wordpress_1 | 172.17.0.4 - - [25/Mar/2017:10:45:24 +0000] "GET / HTTP/1.1" 302 338 "-" "-" wordpress_1 | 172.17.0.4 - - [25/Mar/2017:10:45:25 +0000] "GET / HTTP/1.1" 302 338 "-" "-" wordpress_1 | 172.17.0.4 - - [25/Mar/2017:10:45:26 +0000] "GET / HTTP/1.1" 302 338 "-" "-" wordpress_1 | 172.17.0.4 - - [25/Mar/2017:10:45:27 +0000] "GET / HTTP/1.1" 302 338 "-" "-" wordpress_1 | 172.17.0.4 - - [25/Mar/2017:10:45:29 +0000] "GET / HTTP/1.1" 302 338 "-" "-" wordpress_1 | 172.17.0.4 - - [25/Mar/2017:10:45:30 +0000] "GET / HTTP/1.1" 302 338 "-" "-" wordpress_1 | 172.17.0.4 - - [25/Mar/2017:10:45:31 +0000] "GET / HTTP/1.1" 302 338 "-" "-" wordpress_1 | 172.17.0.4 - - [25/Mar/2017:10:45:32 +0000] "GET / HTTP/1.1" 302 338 "-" "-" wordpress_1 | 172.17.0.4 - - [25/Mar/2017:10:45:33 +0000] "GET / HTTP/1.1" 302 338 "-" "-" wordpress_1 | 172.17.0.4 - - [25/Mar/2017:10:45:34 +0000] "GET / HTTP/1.1" 302 338 "-" "-" wordpress_1 | 172.17.0.4 - - [25/Mar/2017:10:45:35 +0000] "GET / HTTP/1.1" 302 338 "-" "-" wordpress_1 | 172.17.0.4 - - [25/Mar/2017:10:45:36 +0000] "GET / HTTP/1.1" 302 338 "-" "-" wordpress_1 | 172.17.0.4 - - [25/Mar/2017:10:45:37 +0000] "GET / HTTP/1.1" 302 338 "-" "-" wordpress_1 | 172.17.0.4 - - [25/Mar/2017:10:45:38 +0000] "GET / HTTP/1.1" 302 338 "-" "-" wordpress_1 | 172.17.0.4 - - [25/Mar/2017:10:45:39 +0000] "G 

您的链接似乎按预期工作。 0.0.0.0不是您连接的IP地址,这是一个侦听器IP,告知networking堆栈侦听所有接口而不是主机上的特定IP。 在你的情况下,所有的IP都包括127.0.0.1(容器内的回送)和172.17.0.3(该networking上的其他容器可以访问的IP)。

请注意,链接很大程度上被弃用,所以最好在networking上configuration容器(默认网桥除外),并使用内置的DNS发现。 同样,组成版本1的文件格式在很大程度上也被弃用,您应该考虑升级到版本2的组合文件格式。 采用这种格式,默认情况下会为您的容器创build一个networking进行通信。

以下是第2版格式的撰写文件的示例:

 version: '2' services: wordpress: image: wordpress ports: - 8080:80 mysql: image: mariadb environment: MYSQL_ROOT_PASSWORD: examplepass varnish: image: eeacms/varnish ports: - "8000:6081" environment: DNS_ENABLED: "true" BACKENDS: "wordpress" BACKENDS_PORT: 8080 

http 302是一个redirect,无论你正在运行的是能够看到的url,但没有按照redirect或WordPress的没有configuration给一个正确的redirect。


更新:你所看到的清​​漆错误是因为你正在探测/在与302redirect响应的wordpress服务器。 清漆似乎需要一个200探测的URL的成功代码。 为此,您可以在varnish环境中添加如下所示的variables:

 BACKENDS_PROBE_URL: /wp-includes/js/jquery/jquery.js