Eri*_*nna 2 java groovy amazon-ecr aws-cdk
如何在CDK的DockerImageAsset上设置存储库名称和标签?
这是我的代码:(常规)
private uploadImage(String name, File directory, File jarFile) {
def asset = DockerImageAsset.Builder.create(scope, cdkId("$name-image"))
.directory(directory.toString())
.buildArgs([
"jarFile" : jarFile.name,
"environment": config.environment
])
.build()
println "ImageURL: $asset.imageUri"
}
Run Code Online (Sandbox Code Playgroud)
这是打印的图像网址:
ImageURL: 9999999999999.dkr.ecr.us-west-2.${Token[AWS.URLSuffix.1]}/aws-cdk/assets:89ae89e0b3f7652a4ac70a4e18d6b2acec2abff96920e81e6487da58c8b820f3
Run Code Online (Sandbox Code Playgroud)
我想 CI/CD 就是这样,存储库名称/标签并不重要。
但是,如果您需要在 CI/CD 环境之外使用此映像,则会变得一团糟,因为我们在同一存储库 (aws-cdk/assets) 中有许多不同的项目和版本。
我看到一个名为“repositoryName”的方法,但它已被弃用,并且我找不到替代方法或解释为什么它被弃用。
这并不是对您问题的直接回答,因为该解决方案使用 NodeJS 而不是 Groovy,但它可能会帮助其他最终到达这里的人。
您可以查看cdklabs 存储库中的 cdk-ecr-deployment 库,它提供了一个允许您将 docker 映像部署到 ECR 的结构。
这分三个步骤完成:
const repo = new ecr.Repository(this, 'NginxRepo', {
repositoryName: 'nginx',
removalPolicy: RemovalPolicy.DESTROY,
});
Run Code Online (Sandbox Code Playgroud)
const image = new DockerImageAsset(this, 'CDKDockerImage', {
directory: path.join(__dirname, 'docker'),
});
Run Code Online (Sandbox Code Playgroud)
new ecrDeploy.ECRDeployment(this, 'DeployDockerImage', {
src: new ecrDeploy.DockerImageName(image.imageUri),
dest: new ecrDeploy.DockerImageName(`${repo.repositoryUri}:latest`),
});
Run Code Online (Sandbox Code Playgroud)
有关如何使用它的更多上下文,请参阅示例。
| 归档时间: |
|
| 查看次数: |
4609 次 |
| 最近记录: |