如何从本地部署的 AzureML 容器公开端口?
How to expose port from locally-deployed AzureML container?
我希望能够在 VSCode 中调试 运行ning entry_script.py
脚本。此代码 运行 位于通过 az ml deploy
使用自己的 docker 运行 命令创建的容器中。这是本地部署,所以我使用的部署配置如下所示:
{
"computeType": "LOCAL",
"port": 32267
}
我正在考虑使用 ptvsd
来设置一个 VSCode 服务器,但除了端点本身的 32267 端口之外,我还需要 expose/map 5678 端口。所以我不清楚如何映射额外的暴露端口(通常在 docker run
命令中使用 -p
或 -P
标志)。
当然,我可以在 extra_dockerfile_steps
配置中 EXPOSE
它,但实际上不会将它映射到我可以在 VSCode 中连接 to/attach 的主机端口].
我试图确定 运行 命令并可能对其进行修改,但我无法找出 运行 命令是什么。如果我知道如何 运行 通过 AzureML 本地部署创建的图像,那么我可以修改这些标志。
最终感觉太老套了 - 如果通过 az ml deploy
或通过首选的部署配置有更受支持的方法。
这是我在 entry_script 开头使用的代码,用于通过 ptvsd
启用附件:
# 5678 is the default attach port in the VS Code debug configurations
print("Waiting for debugger attach")
ptvsd.enable_attach(address=('localhost', 5678), redirect_output=True)
不幸的是,az ml deploy local 不支持绑定除托管评分服务器的端口以外的任何端口。
构建第二个 docker 文件:
FROM [YOUR_GENERATED_IMAGE]
EXPOSE [YOUR_PORT]
来自您文件夹中的命令行:
docker build -t my_new_image .
docker run -p <port>:<port> my_new_image
您可能需要添加额外的 运行 选项,具体取决于您需要的端口和环境变量等。
如何获取生成的图像名称:
image = Image.create(workspace = az_ws, name=resolve_image_name(), models=[model], image_config = image_config)
image.wait_for_creation()
print("created image")
if(image.creation_state != "Succeeded"):
raise Exception("Failed to create image.")
print("image location: {}".format(image.image_location))
artifacts = {"image_location" : image.image_location}
if(not os.path.exists("/artifacts/")):
os.makedirs("/artifacts/")
with open("/artifacts/artifacts.json", "w") as outjson:
json.dump(artifacts, outjson)
我希望能够在 VSCode 中调试 运行ning entry_script.py
脚本。此代码 运行 位于通过 az ml deploy
使用自己的 docker 运行 命令创建的容器中。这是本地部署,所以我使用的部署配置如下所示:
{
"computeType": "LOCAL",
"port": 32267
}
我正在考虑使用 ptvsd
来设置一个 VSCode 服务器,但除了端点本身的 32267 端口之外,我还需要 expose/map 5678 端口。所以我不清楚如何映射额外的暴露端口(通常在 docker run
命令中使用 -p
或 -P
标志)。
当然,我可以在 extra_dockerfile_steps
配置中 EXPOSE
它,但实际上不会将它映射到我可以在 VSCode 中连接 to/attach 的主机端口].
我试图确定 运行 命令并可能对其进行修改,但我无法找出 运行 命令是什么。如果我知道如何 运行 通过 AzureML 本地部署创建的图像,那么我可以修改这些标志。
最终感觉太老套了 - 如果通过 az ml deploy
或通过首选的部署配置有更受支持的方法。
这是我在 entry_script 开头使用的代码,用于通过 ptvsd
启用附件:
# 5678 is the default attach port in the VS Code debug configurations
print("Waiting for debugger attach")
ptvsd.enable_attach(address=('localhost', 5678), redirect_output=True)
不幸的是,az ml deploy local 不支持绑定除托管评分服务器的端口以外的任何端口。
构建第二个 docker 文件:
FROM [YOUR_GENERATED_IMAGE]
EXPOSE [YOUR_PORT]
来自您文件夹中的命令行:
docker build -t my_new_image .
docker run -p <port>:<port> my_new_image
您可能需要添加额外的 运行 选项,具体取决于您需要的端口和环境变量等。
如何获取生成的图像名称:
image = Image.create(workspace = az_ws, name=resolve_image_name(), models=[model], image_config = image_config)
image.wait_for_creation()
print("created image")
if(image.creation_state != "Succeeded"):
raise Exception("Failed to create image.")
print("image location: {}".format(image.image_location))
artifacts = {"image_location" : image.image_location}
if(not os.path.exists("/artifacts/")):
os.makedirs("/artifacts/")
with open("/artifacts/artifacts.json", "w") as outjson:
json.dump(artifacts, outjson)