[英]Docker: can not communicate between containers
我有一个带有php-fpm容器,一个节点容器和一个用作代理的nginx容器的Docker设置。 现在,在浏览器中( http://project.dev ),php容器像我期望的那样以json响应。 都好。 但是,当我从节点容器向该php容器发出请求时( 查看代码 ),我收到了关于该请求的错误: 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
nginx:
depends_on:
- php-fpm
- node
networks:
- app
ports:
- 80:80
php-fpm:
networks:
- app
node:
networks:
- app
networks:
app:
driver: overlay
Nginx.conf的修整版(查看文件)
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;
}
}
}
FROM php:7.1-fpm-alpine
WORKDIR /var/www
EXPOSE 9000
CMD ["php-fpm"]
出现错误的请求
const response = await axios.get('http://php-fpm:9000');
如何繁殖
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 project
cd project ./scripts/up.sh
docker logs <container-id> -f
ECONNRESET
是关闭连接的另一端,通常可以归因于协议错误。
FastCGI流程管理器(FPM)使用FastCGI协议来传输数据。
通过nginx容器,它将HTTP请求转换为FastCGI
axios.get('http://nginx/whatever.php')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.