我正在运行最新的 docker for mac 构建,并启动并运行了许多基于 docker-compose 的应用程序 - 所有应用程序都接受从我的本地网络调用。
我现在正在尝试实现一个 node.js 应用程序,该应用程序需要网络访问来扫描主机的网络以及响应端口 5005。
谁能给我看一个允许以下网络的 docker-compose.yml 文件:
本地网络:192.168.123/24路由器192.168.123.1
Docker for Mac 在我的 macbook 上运行,地址为 192.168.123.118
在我的网络内部http://192.168.123.118:5005应该响应节点对容器的请求。
容器需要扫描本地网络来寻找服务。
我已经尝试过将默认、桥接和主机网络与一两个接口组合在一起,但只是感到困惑。
容器真的可以成为主机网络的一部分吗?
我似乎记得在 virtualbox 上运行 docker 时这是可以实现的。
我要配置的实际代码是 https://github.com/jishi/node-sonos-http-api 我不认为代码有问题,只是我试图创建的环境。
我正在尝试运行的项目是 Sonos 控制器应用程序:
这是我的 Dockerfile 和 docker-compose.yml 文件以及构建 Sonos 控制器应用程序的命令
mkdir sonos
cd sonos
git clone https://github.com/jishi/node-sonos-http-api sonos
docker-compse.yml
version: '2'
services:
sonos:
build: sonos
network_mode: host
声诺斯/Dockerfile
FROM node:4-onbuild
EXPOSE 5005
在此之后我可以启动控制器:
docker-compose stop; docker-compose-build; docker-compose up;
输出是:
Recreating sonos_sonos_1
Attaching to sonos_sonos_1
sonos_1 | npm info it worked if it ends with ok
sonos_1 | npm info using npm@2.15.11
sonos_1 | npm info using node@v4.6.2
sonos_1 | npm info prestart sonos-http-api@1.1.7
sonos_1 | npm info start sonos-http-api@1.1.7
sonos_1 |
sonos_1 | > sonos-http-api@1.1.7 start /usr/src/app
sonos_1 | > node server.js
sonos_1 |
sonos_1 | 2016-11-13T11:19:52.476Z INFO Presets loaded: { example:
sonos_1 | { players:
sonos_1 | [ { roomName: 'Bathroom', volume: 10 },
sonos_1 | { roomName: 'Kitchen', volume: 10 },
sonos_1 | { roomName: 'Office', volume: 10 },
sonos_1 | { roomName: 'Bedroom', volume: 10 },
sonos_1 | { roomName: 'TV Room', volume: 15 } ],
sonos_1 | playMode: { shuffle: true, repeat: 'all', crossfade: false },
sonos_1 | pauseOthers: false,
sonos_1 | favorite: 'My example favorite' } }
sonos_1 | 2016-11-13T11:19:52.497Z INFO http server listening on port 5005
sonos_1 | 2016-11-13T11:20:18.478Z ERROR No system has yet been discovered. Please see https://github.com/jishi/node-sonos-http-api/issues/77 if it doesn't resolve itself in a few seconds.
最后一行是响应这个请求: http://localhost:5005/zones
我觉得在主机模式下运行的 Sonos 容器无法看到我的本地网络以发现我的 Sonos 扬声器。