4. 创建 Node.js 应用程序映像

在此步骤中,从本地 Express.js 应用创建映像。

添加 Docker 文件

在 Visual Studio Code 中打开命令面板 (F1),键入 add docker files to workspace,然后选择 Docker:Add Docker files to workspace 命令。

使用以下值回答提示:

Prompt
选择应用程序平台 Node.js
选择 package.json 文件 myexpressapp\package.json
应用在哪个端口上进行侦听? 3000
包括可选的 Docker Compose 文件?

该命令将创建一个 Dockerfile,以及一些用于 Docker 撰写的配置文件和一个 .dockerignore

生成 Docker 映像

Dockerfile 描述你的应用环境,包括源文件的位置和用于在容器中启动应用的命令。

  1. 打开命令面板 (F1),然后运行 Docker Images:Build Image 以生成映像。 VS Code 使用当前文件夹中的 Dockerfile,并为映像提供与当前文件夹相同的名称。

  2. 完成后,Visual Studio Code 的“终端” 面板将打开,以便运行 docker build 命令。 输出还会显示构成应用环境的每个步骤或层。

  3. 生成后,映像会显示在 Docker 资源管理器“映像”下,名为 jse2eexpressserver“映像”。

修改生成任务以包含标记

若要将映像推送到注册表,必须先使用注册表名称标记该映像。 将生成任务更改为始终使用 Azure 注册表名称生成。

  1. 打开 VS Code 的任务文件(位于 ./vscode/tasks.json)。

  2. 查找类型为 docker-build 的任务。

  3. dockerBuild 属性中,使用注册表名称 (YOUR-REGISTRY-NAME) 添加 tag 属性:

    {
        "type": "docker-build",
        "label": "docker-build",
        "platform": "node",
        "dockerBuild": {
            "dockerfile": "${workspaceFolder}/Dockerfile",
            "context": "${workspaceFolder}",
            "pull": true,
            "tag": "YOUR-REGISTRY-NAME.azurecr.io/jse2eexpressserver:latest"
        }
    },
    

    如果在 Linux 或 macOS 上生成,请参阅此 生成 问题。

  4. 作为最后一步,重新生成,以便使用注册表标记映像。 打开命令面板 (F1),然后运行 Docker Images:Build Image 以生成映像。

将映像推送到注册表

  1. 新标记的映像现在显示为 Docker 资源管理器中的 节点,在 映像 下包含注册表名称,例如 YOUR-REGISTRY-NAME.azurecr.io/jse2eexpressserver

  2. 展开该节点,右键单击“最新” ,然后选择“推送” 。 按 Enter 接受该映像的标记。

  3. “终端” 面板显示用于此操作的 docker push 命令。 目标注册表由映像名称中指定的注册表确定。

  4. 如果输出显示“需要身份验证”,请在终端中运行 az acr login --name <your registry name>

  5. 完成后,在 Docker 扩展资源管理器中展开“注册表”节点以查看注册表中的映像,名为 jse2eexpressserver

后续步骤