Docker Swarm and Nginx + Varnish



我有一个包含Nginx, PhpFpm和Varnish的docker-compose文件。

我的Nginx是这样工作的:用户连接到网站=>Nginx (443) =>清漆(80)=>Nginx (8080) =>Phpfpm:9000或其他…

我的项目工作良好的"depends_on"在docker-compose中配置。但是,对于docker swarm, depends_on会被忽略。

我的问题开始了。

我的Varnish容器,需要Nginx运行,或崩溃,由于主机名定义在配置文件的顶部:

# varnish config file
backend default {
.host = "nginx";
.port = "8080";
.connect_timeout = 10s;
.first_byte_timeout = 10s;
.between_bytes_timeout = 10s;
}

并且,我的nginx需要清漆才能运行,否则它也会崩溃…

# pass to varnish
location / {
proxy_pass http://varnish;
}
upstream varnish {
server varnish:80;
}

所以,清漆崩溃是因为nginx没有启动,而nginx崩溃是因为清漆没有启动。

这个问题有解决办法吗?

Varnish容器失败的原因是nginx主机名无法解析为IP地址。

docker-compose.yml中可以为各种容器分配静态IP地址。请考虑固定IP地址,并将其中一个分配给Varnish后端的.host属性。

这样可以避免循环依赖。即使IP地址还不存在,Varnish也不会抱怨。Varnish仅在发生缓存丢失或缓存绕过时连接到后端。

最新更新