【发布时间】:2015-03-08 16:18:38
【问题描述】:
我只是想使用 Docker 设置一个 Web 服务器。 我有 3 个不同的容器:
-
jprjr/php-fpm
sudo docker run --name c_php-fpm -v $HOME/data/webstack/www:/srv/http:ro -p 9000:9000 -d jprjr/php-fpm -
nginx
sudo docker run --name c_nginx -v $HOME/data/webstack/www:/usr/share/nginx/html:ro -p 8080:80 --link c_php-fpm:c_php-fpm -d nginx nginx -
jacksoncage/清漆
sudo docker run --name c_varnish -i -d -p 80:80 --link c_nginx:c_nginx -e VARNISH_BACKEND_PORT=80 -e VARNISH_BACKEND_IP=c_nginx jacksoncage/varnish
PHP 和 nginx 工作正常,但是 varnish 有错误:
curl -I http://localhost/index.html
curl: (56) Recv failure: Connection reset by peer
sudo docker ps返回:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4ee21c4a80e2 jacksoncage/varnish:latest "/bin/bash" 25 minutes ago Up 25 minutes 0.0.0.0:80->80/tcp c_varnish
4dcc7babd92c nginx:latest "nginx" 16 hours ago Up 48 minutes 443/tcp, 0.0.0.0:8080->80/tcp c_nginx
3c0f8c1d634c jprjr/php-fpm:latest "php-fpm -F" 16 hours ago Up 48 minutes 0.0.0.0:9000->9000/tcp c_php-fpm
sudo docker logs c_varnish 不返回任何内容。
谢谢!
【问题讨论】:
-
我还在另一个应用程序上得到了“对等连接重置”,因为我的服务器(在容器内运行)只在本地主机上监听。你可以通过
docker exec -it varnish bash进入 Varnish 容器并在里面尝试curl -I http://localhost/index.html吗? -
感谢您的回答,我遇到以下错误:
curl: (7) Failed to connect to localhost port 80: Connection refused. -
这意味着 Varnish 并没有真正监听容器内的 80 端口。尝试手动启动
./start.sh并检查错误。顺便说一句,我之前的命令应该是docker exec -it c_varnish bash(不是varnish)。 -
返回:
Backend host '"${VARNISH_BACKEND_IP}"' could not be resolved to an IP address: Servname not supported for ai_socktype (Sorry if that error message is gibberish.) ('input' Line 8 Pos 13) .host = "${VARNISH_BACKEND_IP}"; ------------#######################- In backend specification starting at: ('input' Line 7 Pos 1) backend default { #######---------- Running VCC-compiler failed, exit 1 VCL compilation failed Cannot open /var/lib/varnish/4ee21c4a80e2/_.vsm: No such file or directory