簡體   English   中英

如何從 docker-compose 文件在 CDK 中創建 Docker 圖像資源?

[英]How do I create Docker image assets in CDK from a docker-compose file?

我正在使用 CDK 部署一個應用程序,該應用程序使用 docker-compose 文件中定義的容器。 我可以看到有一些方法可以從 Dockerfiles 創建圖像資產,例如DockerImageAsset class 或ContainerImage.fromAsset方法。 但是我找不到任何資源來處理 docker-compose.yml 文件中定義的服務。 我可以在本地構建圖像並推送到 ECR,但如果這個過程自動化就好了。 處理這個問題的最佳方法是什么?

我沒有使用或看到 docker-compose 與 CDK 一起使用,但我想 CDK 將用於定義 AWS 上的基礎設施,docker-compose 用於在本地運行堆棧,而不是將 compose 與 CDK 一起使用。

您在 CDK 設置中引用 Dockerfile,CDK 會為您構建它並將其推送到 ECR。 ECR 存儲庫在運行 `` 時由 CDK 設置。 這樣就可以在幕后為您處理該部分。 相當方便!

當您定義引用 Dockerfile 的 CDK 代碼時,您隨后將創建的 ECR 映像的引用映像傳遞給任務定義,例如,然后在部署時在 AWS 中使用該映像。 同樣可以使用 lambda 來完成。

我希望下面的這個例子能把它弄清楚一點。 例如,您可以使用 github 操作或 circleci 之類的管道來創建一個為您運行CDK deploy的作業。

// This pushes it to ECR after building the file
const dockerImage = new DockerImageAsset(this, 'some-image', {
  directory: path.join(__dirname, '../../')
})

this.loadBalancer = new ApplicationLoadBalancedFargateService(this, `${namePrefix}-lb`, {
  cluster,
  serviceName: `${namePrefix}-lb`,
  taskImageOptions: {
    containerName: `${namePrefix}-task`,
    image: ecs.ContainerImage.fromDockerImageAsset(dockerImage), <-- this is where you pass the docker image reference
    environment: containerEnvs,
    containerPort: parseInt(containerEnvs.PORT),
    enableLogging: true,
    taskRole: role,
  },
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM