docker-compose:varnish + apache2返回503错误`后端提取失败`

时间:2019-07-31 15:22:17

标签: docker docker-compose varnish

我正在尝试基于Docker-compose.ymlvarnish服务运行非常简单的php7.1+apache2文件:

version: "3"
services:
  cache:
    image: varnish
    container_name: varnish
    volumes:
      - ./default.vcl:/etc/varnish/default.vcl
    links:
      - web:webserver
    depends_on:
      - web
    ports:
      - 80:80
  web:
    image: benit/stretch-php-7.1
    container_name: web
    ports:
      - 8080:80
    volumes:
      - ./index.php:/var/www/html/index.php

default.vcl包含:

vcl 4.0;

backend default {
  .host = "webserver";
  .port = "8080";
}

http://localhost/浏览时遇到以下错误:

Error 503 Backend fetch failed

Backend fetch failed
Guru Meditation:

XID: 9

Varnish cache server

当我在web进行测试时,http://localhost:8080/服务可以正常工作。

怎么了?

1 个答案:

答案 0 :(得分:0)

您需要配置清漆以与端口“ 80”上的“ web”通信,而不是与端口“ 8080”上的“ webserver”通信。

“网络”来自撰写文件中的服务名称。无需设置容器名称,而实际上,如果您过渡到群集模式,那将破坏扩展或执行滚动更新的能力。不推荐使用链接,而支持docker compose将提供的共享网络(链接非常脆弱,如果您更新Web容器,则会断开)。并且printv不保证其他服务已准备好接收请求。如果您很难从启动开始就保持清漆直到Web服务器准备好接收请求,那么您将需要使用一个任务来更新入口点,以等待远程端口可访问并制定如何处理的计划。 Web服务器出现故障。

端口80来自容器端口。如果您只想通过清漆访问端口8080,则无需在Docker主机上发布端口8080,这对许多人来说都是安全隐患。容器直接与容器端口通信,而不是与主机通讯并映射回容器。

生成的撰写文件可能类似于:

mod

重要的是,您的清漆配置如下:

depends_on