现已发布!阅读 10 月份的新功能和修复。

将 Django 镜像推送到注册表

在本教程中,您将采用本地构建的 Python Django 应用程序的容器镜像,并将其部署到 Azure 容器注册表 (ACR) 或 Docker Hub。

创建容器注册表

创建容器注册表以推送镜像。有关如何对注册表进行身份验证以及使用注册表的更多信息,请参阅 使用容器注册表

确保您创建的注册表端点在 VS Code 的 **Docker 资源管理器** 中的 **注册表** 下可见。

Docker Explorer in VS Code showing registries

Django 应用程序的设置

  1. 在 Django 项目的 settings.py 文件中,修改 ALLOWED_HOSTS 列表以包含您打算将应用程序部署到的根 URL。例如,以下代码假设部署到名为“vsdocs-django-sample-container”的 Azure 应用服务 (azurewebsites.net)

    ALLOWED_HOSTS = [
        # Example host name only; customize to your specific host
        "vsdocs-django-sample-container.azurewebsites.net"
    ]
    

    如果没有此条目,您将在部署后看到一条“DisallowedHost”消息,指示您将网站域添加到 ALLOWED_HOSTS。这将要求您再次重新构建、推送和重新部署镜像。

  2. 在 **命令面板** (⇧⌘P (Windows、Linux Ctrl+Shift+P)) 上,选择 **Docker: 构建镜像** 以使用新的设置重新构建镜像。

    **提示:** 如果您想在生产环境中的多个托管服务上测试您的镜像,您只需在 ALLOWED_HOSTS 中输入 "*"

将镜像推送到注册表

声明 ALLOWED_HOSTS 后,下一步是将 Django 镜像推送到容器注册表。

  1. 打开 **命令面板** (⇧⌘P (Windows、Linux Ctrl+Shift+P)) 并选择 **Docker: 推送**。

  2. 选择您刚刚构建的要推送到注册表的镜像。

  3. 选择您创建的要推送到其中的注册表。这将有助于正确标记镜像。

    Select a registry

  4. 选择注册表和完整标签后,镜像将被推送。上传进度将显示在 **终端** 窗口中。

  5. 完成后,展开 **Docker 资源管理器** 中的 **注册表** > **Azure** (或 **DockerHub**) 节点,然后展开注册表和镜像名称以查看确切的镜像。(您可能需要刷新 **Docker 资源管理器**.)

    The built app image in the Azure Container Registry

**提示:** 第一次推送镜像时,您会看到 VS Code 上传镜像包含的每个层。但是,后续推送操作将仅更新从第一个已更改的层开始的层。由于您的应用程序代码通常是最常更改的,因此这通常是为什么在 Dockerfile 的最后几行复制应用程序代码的原因。要查看此内部循环的实际效果,请对您的代码进行小的更改,重新构建镜像,然后再次推送到注册表。

现在,您已将镜像推送到注册表,您可以将其部署到任何支持容器的云服务。有关部署到 Azure 应用服务的详细信息,请参阅 部署容器