我想在Azure Web App中从dockerhub运行mongodb docker映像,例如mongo:3.6
或mongo: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。
答案 0 :(得分:0)
您可以使用Robomongo或任何其他类似的应用程序访问数据库,并使用IP和端口来创建新连接。