gpt4 book ai didi

amazon-web-services - 在 Assets 捆绑中使用 DockerImageAsset 镜像

转载 作者:行者123 更新时间:2023-12-03 07:39:12 25 4
gpt4 key购买 nike

我想在使用 AWS CDK 的自定义 Docker 镜像处理存储库中的本地文件后将其上传到 s3。我不想公开 docker 镜像(不过这并不是一个很大的限制)。另外,我不想为每个 s3 部署构建镜像

由于我不想为每个存储桶部署构建 docker 镜像,因此我创建了一个 DockerImageAsset,并尝试将镜像 uri 作为 BucketDeployment 的 bundle 属性(property)。代码如下:

    const image = new DockerImageAsset(this, "cv-builder-image", {
directory: join(__dirname, "../"),
});

new BucketDeployment(this, "bucket-deployment", {
destinationBucket: bucket,
sources: [
Source.asset(join(__dirname, "../"), {
bundling: {
image: DockerImage.fromRegistry(image.imageUri),
command: [
"bash",
"-c",
'echo "heloo" >> /asset-input/cv.html && cp /asset-input/cv.html /asset-output/cv.html',
],
},
}),
],
});

DockerImageAsset 部署正常。但它在 BucketDeployment 部署期间抛出此错误

docker: invalid reference format: repository name must be lowercase

我可以看到镜像正在部署到 AWS。

感谢任何帮助。祝你有美好的一天

最佳答案

据我了解 - 为了简化 - 你有一个 Docker 镜像,用于启动一个实用程序容器,该容器仅接受一个文件并输出一个工件(另一个文件)。

然后您想要使用 BucketDeployment 构造将工件上传到 S3。

在处理将 Java 等应用程序编译为 .jar 工件或将前端应用程序(React、Angular)编译为静态输出(HTML、CSS、JS)文件时,这是一个常见问题。

我过去处理此问题的方法是:将工件生成拆分为管道中的一个单独步骤,然后触发“cdk 部署”作为后续步骤。

您会少一些头痛,并且您可以控制流程的所有部分,包括访问低级 Docker 命令,例如 docker build ...docker run ... ,实际上,以最佳方式利用本地层缓存。如果您依靠 CDK 来为您进行捆绑 - 幕后有一些并不总是显而易见的魔力。我并不是说这是不可能的,只是更多的“工作”。

关于amazon-web-services - 在 Assets 捆绑中使用 DockerImageAsset 镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74334792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com