将Django镜像推送到注册表

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

创建一个容器注册表

创建一个容器注册表以推送镜像。有关如何验证和使用注册表的更多信息,请参阅使用容器注册表

确保您在VS Code的Docker Explorer中的Registries下可以看到您创建的注册表端点:

VS Code中的Docker Explorer显示注册表

Django 应用的设置

  1. 在您的Django项目的settings.py文件中,修改ALLOWED_HOSTS列表以包含您打算部署应用程序的根URL。例如,以下代码假设部署到名为“vsdocs-django-sample-container”的Azure App Service (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: Build Image以使用新设置重新构建镜像。

    提示: 如果您想在多个托管服务上测试您的生产环境中的图像,您可以在ALLOWED_HOSTS中简单地输入"*"

将镜像推送到注册表

一旦声明了ALLOWED_HOSTS,下一步就是将你的Django镜像推送到容器注册表:

  1. 打开命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 并选择Docker: Push

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

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

    选择一个注册表

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

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

    Azure 容器注册表中的构建应用镜像

提示: 第一次推送镜像时,你会看到VS Code上传了镜像的每一层。然而,随后的推送操作只会从第一个发生变化的层开始更新。由于你的应用代码通常是变化最频繁的部分,这就是为什么应用代码通常被复制到Dockerfile的最后几行。要查看这个内部循环的实际效果,可以对你的代码进行一个小改动,重新构建镜像,然后再次推送到注册表。

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