问题描述
中国区的Azure App Service(应用服务)已经支持创建Docker并选择Linux环境。在使用中,我们可以继续通过kudu站点的方式登录查看站点的一些日志及部署文件。它的登录方式与App Service Windows方式一样(通过门户目录的Advance Tool登录,或在URL中添加.SCM登录)。如想要跟多的操作及Linux SSH方式,在微软的官方站点中,推荐有两种登录方式:
- 在浏览器中打开 SSH 会话
- 从远程 shell 打开 SSH 会话(https://docs.azure.cn/zh-cn/app-service/configure-linux-open-ssh-session#open-ssh-session-from-remote-shell)
对于第一种,从门户左侧目录“SSH”登录到SSH窗口时,则一直出现CREDENTIALS提示,始终无法成功登录。错误截图如下:
问题原因
在浏览器中通过开发者工具(F12)查看到错误发生在加载Jquery 1.11.0文件,Azure App Service使用的JS地址为 https://code.jquery.com/jquery-1.11.0.min.js,经验证,该地址无法在国内网络正常访问。
查看错误信息截图:
国内网络无法访问:(https://code.jquery.com/jquery-1.11.0.min.js)
替换方案
在了解到根本原因后,替代方案有两种。
- 一是通过VPN,如能正常访问 https://code.jquery.com/jquery-1.11.0.min.js则可以解决此问题。
- 二是使用远程SSL的方式登录。查看详细的步骤见文档(https://docs.azure.cn/zh-cn/app-service/configure-linux-open-ssh-session#open-ssh-session-from-remote-shell)。
以下部分为在使用远程SSL的方式时,在Powershell中执行的命令及截图:
第一步:使用Powershell登录到中国区并选择订阅
az cloud set --name AzureChinaCloud az login az account set --subscription 'select subscription'
- 第一行命令设置登录的环境。如不设定,默认为Global Azure
- 第二行命令通过浏览器打开登录页面。登录成功后,会列出所有的订阅号。
- 第三行命令设置目标订阅
第二步:使用 az webapp create-remote-connection 命令打开到应用的远程连接
完整命令为:
az webapp create-remote-connection --subscription <subscription-id> --resource-group <resource-group-name> -n <app-name> &
第三步:开启新的Powershell窗口,建立SSH连接
通过第二步中的端口60812,建立SSH连接,命令为:ssh root@127.0.0.1 -p 10812
参考资料
以交互方式登录: https://docs.azure.cn/zh-cn/cli/authenticate-azure-cli?view=azure-cli-latest
在 Azure 应用服务中打开 Linux 容器的 SSH 会话: https://docs.azure.cn/zh-cn/app-service/configure-linux-open-ssh-session#open-ssh-session-in-browser
Nginx的Dockerfile内容:https://hub.docker.com/layers/nginx/library/nginx/latest/images/sha256-d73056bfea356376bf2464e544cc5508d8670f51b56b17a76638ee5433fb8e9f?context=explore
开启SSH服务,在自定义镜像时添加ssh server的部分: https://docs.microsoft.com/en-us/azure/app-service/configure-custom-container?pivots=container-linux#enable-ssh
参考微软官方给出的镜像进行构建自定义镜像: https://github.com/Azure-App-Service/tomcat/blob/dev/8.5-jre8/Dockerfile