我试图让Varnish容器作为多容器Docker环境的一部分运行。
我使用https://github.com/newsdev/docker-varnish作为基础。
我的Dockerfile看起来像:
FROM newsdev/varnish:4.1.0
COPY start-varnishd.sh /usr/local/bin/start-varnishd
ENV VARNISH_VCL_PATH /etc/varnish/default.vcl
ENV VARNISH_PORT 80
ENV VARNISH_MEMORY 64m
EXPOSE 80
CMD [ "exec /usr/local/sbin/varnishd -j unix,user=varnishd -F -f /etc/varnish/default.vcl -s malloc,64m -a 0.0.0.0:80 -p http_req_hdr_len=16384 -p http_resp_hdr_len=16384" ]
当我作为docker-compose设置的一部分运行时,我得到:
错误:for eventsapi_varnish_1无法启动服务清漆:oci 运行时错误:container_linux.go:262:启动容器进程 引起" exec:\" exec / usr / local / sbin / varnishd -j unix,user = varnishd -F -f /etc/varnish/default.vcl -s malloc,64m -a 0.0.0.0:80 -p http_req_hdr_len = 16384 -p http_resp_hdr_len = 16384 \":stat exec / usr / local / sbin / varnishd -j unix,user = varnishd -F -f /etc/varnish/default.vcl -s malloc,64m -a 0.0.0.0:80 -p http_req_hdr_len = 16384 -p http_resp_hdr_len = 16384:没有这样的文件或 目录"
如果我尝试
,我会得到同样的结果CMD ["start-varnishd"]
(因为它在基础newsdev / docker-varnish中)
或
CMD [/usr/local/bin/start-varnishd]
但如果我直接在容器上运行bash shell:
docker run -t -i eventsapi_varnish /bin/bash
然后从那里运行varnishd命令,varnish启动正常(并开始抱怨它显然无法找到Web容器)。
我做错了什么?它找不到什么文件?再次直接查看正在运行的容器,似乎Varnish是它认为应该的位置,VCL文件是它认为它应该是什么......什么是阻止它在docker-compose中运行?
谢谢!
答案 0 :(得分:1)
我没有弄清楚为什么我会收到此错误,但是"已修复"通过使用(更近期?)fork:https://hub.docker.com/r/tripviss/varnish/。我的Dockerfile现在只是:
FROM tripviss/varnish:5.1
COPY default.vcl /usr/local/etc/varnish/