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

CDK Pipeline部署Fargate时,Docker构建找不到凭据文件.mysecrets

问题根源分析

你遇到的文件找不到问题,核心原因是CDK流水线的Synth阶段与资产发布(Docker构建)阶段是完全独立的CodeBuild任务,两者的文件系统和工作环境相互隔离:

  1. 你在Synth阶段生成的.mysecrets文件仅存在于Synth任务的运行容器中,不会自动同步到后续的Docker构建任务环境里。
  2. 你配置的DockerImageAsset指定了./App/Subfolder作为构建目录,即便文件能传递过来,.mysecrets也不在这个目录下,Docker构建时自然无法找到。
解决方案

推荐直接在资产构建阶段生成凭据文件,避免跨阶段传递敏感信息的安全风险,具体修改如下:

修改资产发布阶段的CodeBuild配置

在assetPublishingCodeBuildDefaults中添加凭据拉取和文件生成逻辑,确保.mysecrets出现在Docker构建的目标目录下:

assetPublishingCodeBuildDefaults: {
  partialBuildSpec: BuildSpec.fromObject({
    env: {
      variables: {
        DOCKER_BUILDKIT: '1',
      },
      'secrets-manager': {
        TOKEN: `${NugetCredentialsArn}:NUGET_TOKEN`,
        USER: `${NugetCredentialsArn}:NUGET_USER`
      }
    },
    phases: {
      pre_build: {
        commands: [
          // 进入Docker构建的目标目录,生成凭据文件
          'cd ./App/Subfolder',
          'echo TOKEN=${TOKEN} >> .mysecrets',
          'echo USER=${USER} >> .mysecrets',
        ]
      }
    }
  }),
}

确保Dockerfile正确使用Secret

同时要保证你的Dockerfile.aws启用了BuildKit并正确引用Secret:

# 必须声明使用支持BuildKit的Dockerfile语法
# syntax=docker/dockerfile:1.4

# 示例:将Secret内容写入容器内的指定位置
RUN --mount=type=secret,id=mysecrets,target=/tmp/.mysecrets \
    cat /tmp/.mysecrets >> /app/nuget.config

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 08:27:07