You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在AWS CDK(C#)部署中构建子目录Dockerfile的问题

AWS CDK(C#)构建Visual Studio Dockerfile的上下文冲突解决

正确配置方案

要让CDK适配Visual Studio Dockerfile对上下文目录的要求,同时正确定位Dockerfile,你需要按以下逻辑配置DockerImageAsset:

var dockerImage = new DockerImageAsset(this, "AppImage", new DockerImageAssetProps
{
    // 指定Docker构建上下文为解决方案根目录(相对于CDK项目目录的上级目录)
    Directory = "../",
    // 指定Dockerfile相对于解决方案根目录的完整路径
    File = "src/my-proj-folder/Dockerfile"
});

你之前配置报错的原因

DockerImageAsset的Directory参数定义的是Docker构建的上下文目录,File参数是相对于该上下文目录的Dockerfile路径。你之前设置Directory = "src/",此时CDK会在src/目录下查找./my-proj-folder/Dockerfile,如果你的Dockerfile实际不在这个层级(而是在解决方案根目录下的项目文件夹中),就会出现文件找不到的错误。

可选优化(缩小构建上下文)

如果解决方案目录包含大量无关文件,不想把整个目录作为Docker构建上下文,可以修改Visual Studio生成的Dockerfile中的COPY指令,将路径调整为基于Dockerfile所在目录的相对路径,然后将Directory设为Dockerfile所在的项目目录:

var dockerImage = new DockerImageAsset(this, "AppImage", new DockerImageAssetProps
{
    Directory = "../src/my-proj-folder",
    File = "Dockerfile"
});

Dockerfile修改示例(适配新的上下文):

# 原VS生成指令(基于解决方案根目录上下文)
COPY ["MyProject/MyProject.csproj", "MyProject/"]

# 修改后(基于项目目录上下文)
COPY ["MyProject.csproj", "."]

内容的提问来源于stack exchange,提问作者Chris Rice

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 12:22:51