【发布时间】:2018-04-30 14:43:27
【问题描述】:
我有一个带有 php-fpm 容器、一个节点容器和一个用作代理的 nginx 容器的 Docker 设置。现在在浏览器 (http://project.dev) 中,php 容器像我期望的那样以 json 响应。都好。但是,当我从节点容器向这个 php 容器 (view code) 发出请求时,我收到请求错误:ECONNRESET。显然,节点容器无法与 php 容器通信。 nginx的错误好像没有添加条目。
Error: read ECONNRESET at _errnoException(util.js: 1031: 13) at TCP.onread(net.js: 619: 25)
errno: 'ECONNRESET',
code: 'ECONNRESET',
syscall: 'read'
有什么想法吗?
我已经做了一个 github 仓库:https://github.com/thomastilkema/docker-nginx-php-fpm-node
docker-compose.yml (view file)的精简版
nginx:
depends_on:
- php-fpm
- node
networks:
- app
ports:
- 80:80
php-fpm:
networks:
- app
node:
networks:
- app
networks:
app:
driver: overlay
http {
upstream php-fpm {
server php-fpm:9000;
}
upstream node {
server node:4000;
}
server {
listen 80 reuseport;
server_name api.project.dev;
location ~ \.php$ {
fastcgi_pass php-fpm;
...
}
}
server {
listen 80;
server_name project.dev;
location / {
proxy_pass http://node;
}
}
}
php-fpm/Dockerfile (view file)
FROM php:7.1-fpm-alpine
WORKDIR /var/www
EXPOSE 9000
CMD ["php-fpm"]
报错的请求
const response = await axios.get('http://php-fpm:9000');
如何重现
- Create a swarm manager (and a worker) node
- 找出你的swarm manager节点的IP地址(通常是
192.168.99.100):docker-machine ip manager或docker-machine ls。通过添加192.168.99.100 project.dev和192.168.99.100 api.project.dev编辑您的主机文件(在 Mac 上,sudo vi /private/etc/hosts) git clone https://github.com/thomastilkema/docker-nginx-php-fpm-node projectcd project ./scripts/up.sh- 看一下容器的日志:
docker logs <container-id> -f
【问题讨论】:
标签: php node.js docker nginx proxy