我有一个在 Docker 上运行的简单 TypeScript 程序,该程序想要打开与外部 Websocket 服务器的 Websocket 连接。像这样的东西
----------------------- ------------------------------
| My Local Docker | | my.ws-server.somewhere.com |
| | | |
| WS client |---> Internet----->| WS server |
----------------------- ------------------------------
Run Code Online (Sandbox Code Playgroud)
当我ts-node test.js在 Docker 之外的开发环境中使用 WS 客户端运行 ( ) 代码时,它工作正常并且可以毫无问题地连接:
let ws = new WebSocket("ws://my.ws-server.somewhere.com", [], { })
ws.onopen = () => {
console.log('Connection opened ok! ')
}
Run Code Online (Sandbox Code Playgroud)
但是,当我将这个东西放入 Docker 并在那里运行时,连接被拒绝。程序按其应有的方式开始连接尝试,但只是超时,并且连接从未打开。我猜这与 Docker 网络有关?如果我想打开一个从Docker到外界的出站连接,我需要定义一些路由什么的吗?
我的 Docker 设置
Dockerfile
FROM node:12.18.3
RUN mkdir /src
WORKDIR /src
ADD ./package.json …Run Code Online (Sandbox Code Playgroud)