sam*_*ayo 6 nginx php-fpm docker docker-compose docker-machine
我有一个从这个 repo克隆的 LEMP 堆栈的 docker 设置。
在运行窗口 10 的开发机器上一切正常,但是当我将图像推送到 docker hub 并将其拉到我的 VPS 上时,无论我做什么,我总是收到此错误:
[emerg] 1#1: host not found in upstream "php-fpm:9000" in /etc/nginx/conf.d/upstream.conf:1
Run Code Online (Sandbox Code Playgroud)
此错误来自两个文件。
这是代码:
RUN echo "upstream php-upstream { server ${PHP_UPSTREAM_CONTAINER}:${PHP_UPSTREAM_PORT}; }" > /etc/nginx/conf.d/upstream.conf \
&& rm /etc/nginx/conf.d/default.conf
Run Code Online (Sandbox Code Playgroud)
第二个 来自这个 Nginx default.conf 文件
这是代码:
location ~ \.php$ {
...
fastcgi_pass php-upstream;
...
}
Run Code Online (Sandbox Code Playgroud)
我说这两个文件是 b/c 其他地方没有引用 php-upstream 的原因。
我已经尝试了添加/删除主机、添加depends_on
、更改 nginx、php 版本、禁用 selinux 的所有可能组合,但它不起作用。我总是在生产中遇到相同的错误,但在本地服务器上一切正常。
小智 6
nginx 无法解析主机名php-fpm
,因此拒绝启动。
有一个简单的解决方法 - 在这种情况下 - 导致502 - Bad Gateway
直到 nginx 能够解析上游的主机名:将上游地址放入变量中!
此外,您应该使用resolver
选项手动将 nginx 指向 docker 的内部 DNS 。泊坞窗内部DNS服务器始终处于127.0.0.11
至于中找到文件。
resolver 127.0.0.11;
set $upstream php-fpm:9000;
# nginx will now start if host is not reachable
fastcgi_pass $upstream;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21175 次 |
最近记录: |