我无法通过公共IP访问Docker Node.js容器
我有一个Docker Node.js容器侦听端口4757和网络库,使用我的公共IP我无法通过公共IP访问Docker Node.js容器,node.js,docker,docker-compose,ip,Node.js,Docker,Docker Compose,Ip,我有一个Docker Node.js容器侦听端口4757和网络库,使用我的公共IP server listening on {"address":"144.xxx.xxx.66","family":"IPv4","port":4757} 当我从我的计算机访问时,我没有问题,但如果我尝试访问我的移动设备或其他设备,连接将被拒绝(ERR_ADDRESS_unaccess) 我已禁用Linux防火墙 如果我对我的公共IP进行ping,它将正常工作 我的路由器中兴通讯(Yoigo)的端口4757打开
server listening on {"address":"144.xxx.xxx.66","family":"IPv4","port":4757}
当我从我的计算机访问时,我没有问题,但如果我尝试访问我的移动设备或其他设备,连接将被拒绝(ERR_ADDRESS_unaccess)
- 我已禁用Linux防火墙李>
- 如果我对我的公共IP进行ping,它将正常工作
- 我的路由器中兴通讯(Yoigo)的端口4757打开,局域网主机为192.168.1.128 TCP和UPD
version: '3'
volumes:
local_postgres_data: {}
local_postgres_data_backups: {}
services:
django: &django
build:
context: .
dockerfile: ./compose/local/django/Dockerfile
image: hegeo_local_django
depends_on:
- postgres
volumes:
.:/app
env_file:
- ./.envs/.local/.django
- ./.envs/.local/.postgres
ports:
- "8000:8000"
command: /start
networks:
default:
ipv4_address: 144.xxx.xxx.3
node:
build:
context: .
dockerfile: ./compose/production/nodejs/Dockerfile
image: hegeo_node
depends_on:
- postgres
links:
- postgres
ports:
- "4757:4757"
networks:
default:
ipv4_address: 144.xxx.xxx.66
postgres:
build:
context: .
dockerfile: ./compose/production/postgres/Dockerfile
image: hegeo_production_postgres
volumes:
- local_postgres_data:/var/lib/postgresql/data
- local_postgres_data_backups:/backups
env_file:
- ./.envs/.local/.postgres
networks:
default:
ipv4_address: 144.xxx.xxx.4
networks:
default:
driver: bridge
driver_opts:
com.docker.network.enable_ipv6: "false"
ipam:
driver: default
config:
- subnet: 144.xxx.xxx.0/24
我认为我必须使用“docker run”,但也不能工作。
编辑:
关键是,我使用了一个网络“驱动程序”,因为我从地理定位设备接收跟踪,我需要使用Node.js解析此跟踪并将其发送给Django。如果我没有设置网络并为Django分配ipv4_地址,Django和Node.js之间的连接将不起作用 您提到您已打开端口,并已将其从路由器转发到笔记本电脑。 您的docker yaml不需要了解公共IP,因此您应该删除网络设置,然后执行以下操作:
Internet > (public IP) Router (NAT to Local Docker host machine IP) > Docker host laptop (with firewall off, or port open) > docker engine (port is mapped from host to container) > your Node.js script listening to on the port.
在你的新笔记本电脑中删除这个
ipv4\u地址:144.xxx.xxx.66
。谢谢,它可以工作,但我需要设置ipv4\u地址,我更新了我的帖子解释了它。另一个参考信息是,你不能只分配公共IP,除非你真的从你的ISP购买了它们,并且它们正确地路由到了你的路由器。谢谢,它工作,但我需要这个网络设置,我更新了我的帖子解释它。你可以分配IP,但不是公共IP。尝试一个简单的10.x.x.x范围,端口映射将处理传入的流量,并且您可以使用您设置的专用IP与django通信。