如何在 Visual Studio Code Remote 中指定 dockerfile 阶段?

How do I specify the dockerfile stage in Visual Studio Code Remote?

我有一个多阶段的 Dockerfile。我想配置 VS Code Remote 来构建 Dockerfile 的开发阶段而不是 Dockerfile 中的最后阶段。

我很确定这个配置会放在 .devcontainer.json 文件中。我已经通读了 .devcontainer.json 参考资料:https://code.visualstudio.com/docs/remote/containers#_devcontainerjson-reference 并尝试了 runArgs,但这些是 运行 时间参数,而不是构建参数。

我试过这个:

{
        "dockerFile": "Dockerfile",
        "extensions": ["ms-python.python"],
        "runArgs": [
                "--target",
                "dev"
        ]
}

和:

{
        "dockerFile": "Dockerfile",
        "extensions": ["ms-python.python"],
        "buildArgs": [
                "--target",
                "dev"
        ]
}

当我使用 runArgs 时,我得到了 Failed: Starting the development container,因为 target 不是 docker run 选项。当我尝试 buildArgs 时,参数显然被忽略了,这是有道理的,因为它没有在文档中列出。

我找到了解决方法。

我可以自己手动构建 Dockerfile:

docker build --target dev -t vizd .

然后在.devcontainer.json中使用image参数:

{
    "image": "vizd",
    "extensions": ["ms-python.python"]
}

不完美,但可行。

您可以使用 Dev Container: Existing Docker Compose 模式。 docker-撰写服务可以指定Docker文件阶段。

运行Args 指定要与“docker 运行”命令一起使用的参数。 在这种情况下,我们需要将参数传递给“docker build”命令。

要指定构建参数,您需要使用“build”属性。在您的示例中,您需要 devcontainer.json 文件包含:

"build": { 
    "target": "dev" 
},