为什么我无法访问在Azure Web应用程序的Docker容器中运行的mongodb?

时间:2019-06-16 19:51:32

标签: mongodb docker azure-web-app-service

我想在Azure Web App中从dockerhub运行mongodb docker映像,例如mongo:3.6mongo:4.1,但是我无法从外部访问它。

根据Azure日志,docker容器运行良好,日志显示:

docker run -d -p 29794:27017 --name mytestapp -e WEBSITE_SITE_NAME=mytestapp -e WEBSITE_AUTH_ENABLED=False -e PORT=27017 -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=mytestappurl -e WEBSITE_INSTANCE_ID=xxx -e HTTP_LOGGING_ENABLED=1 mongo:4.1

2019-06-15 19:42:49.831 INFO  - Container mytestapp for site mytestapp initialized successfully and is ready to serve requests.

据我到目前为止Azure Web App Service only supports port 80 and 443 for inbound traffic的了解,并将内部端口(对于mongodb:27017)映射到端口80或443(取决于SSL与否)。

当我通过浏览器和端口80访问我的Web应用程序时,我收到消息

It looks like you are trying to access MongoDB over HTTP on the native driver port.

这表示该服务可以以某种方式访问​​,并且正在等待端口80上的请求,但是当我尝试通过mongo连接时,例如:

mongo -host mytestappurl -port "80"  -username "root" -passwort "myrootpw" --verbose

我明白了

creating new connection to:mytestappurl:80
D NETWORK  [js] connected to server to:mytestappurl:80
I NETWORK  [js] recv(): message msgLen 1347703880 is invalid. Min 16 Max: 48000000

,依此类推。我还尝试在Azure应用设置中设置键/值对WEBSITES_PORT = 27017,但没有成功。相同的设置在本地运行良好,我可以按预期访问mongodb。

1 个答案:

答案 0 :(得分:0)

您可以使用Robomongo或任何其他类似的应用程序访问数据库,并使用IP和端口来创建新连接。