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

4
我有一个多阶段的Dockerfile。我希望配置VS Code远程以构建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时,因为target不是docker run选项,所以出现了失败:启动开发容器。当我尝试使用buildArgs时,这个参数明显被忽略了,这是有道理的,因为它没有在文档中列出。

3个回答

4

runArgs 指定在 "docker run" 命令中使用的参数。在此情况下,我们需要向 "docker build" 命令传递参数。

要指定构建参数,您需要使用 "build" 属性。在您的示例中,您需要将构建参数添加到 devcontainer.json 文件中:

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

是的!这正是我之前在寻找的。我不知道是我错过了还是这是一个新添加的参数。谢谢。 - Christine

3
您可以使用 Dev Container:现有的 Docker Compose 模式。 docker-compose 服务可以指定 Dockerfile 阶段。

0

我找到了一个解决方法。

我可以手动构建Dockerfile:

docker build --target dev -t vizd .

然后在 .devcontainer.json 中使用 image 参数:
{
    "image": "vizd",
    "extensions": ["ms-python.python"]
}

不是完美的,但是可以做到。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接