我正在尝试设置 InteractiveBrokers Client Portal API Gateway 以在 Docker 容器内运行,我只能从本地主机访问它。我希望解决方案独立于操作系统,主要是 Windows 或 Linux。
我能够配置 Docker 容器以使网关运行,但是当我尝试访问它时,我得到
Access Denied
。我相信这是来自实际的网关,所以我至少连接到了它。
这是我的
Dockerfile
:
FROM ubuntu
WORKDIR /home
RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get install default-jre wget unzip -y
RUN wget https://download2.interactivebrokers.com/portal/clientportal.gw.zip
RUN unzip clientportal.gw.zip -d ./clientportal.gw
WORKDIR /home/clientportal.gw
CMD ./bin/run.sh ./root/conf.yaml
我分别使用以下命令构建并运行 Docker 映像和容器:
docker build -t clientportal ./
docker run -p 5000:5000 -it clientportal
我还修改了
conf.yaml
以允许各种IP范围:
ips:
allow:
- 192.*
- 131.216.*
- 127.0.0.1
- host.docker.internal
- 172.17.0.*
deny:
- 212.90.324.10
我的理解是,从 Docker 容器的角度来看,
host.docker.internal
是主机的主机名,Docker 容器的 localhost
解析为 172.17.0.*
。这是我添加到默认列表中的两个附加范围。据我了解,该 IP 是可以连接到网关的 IP 地址白名单。我不确定在尝试连接到 Docker 容器内运行的网关时主机缺少哪个 IP 地址范围。如果我直接在 Windows 中运行网关,那么我可以连接并进行身份验证。
我应该在 conf.yaml
中等待哪些 IP 才能实现此功能?我还需要什么其他设置?除了上述内容之外,我还检查了
IBeam 存储库中的
conf.yaml
,没有发现任何重大差异。我也尝试了那里的 IP 范围,但无济于事。