

Ini adalah Panduan Pengembang AWS CDK v2. CDK v1 yang lebih lama memasuki pemeliharaan pada 1 Juni 2022 dan mengakhiri dukungan pada 1 Juni 2023.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Buat dan terapkan aset image kontainer di aplikasi CDK
<a name="build-containers"></a>

Saat Anda membuat aset image container dengan AWS Cloud Development Kit (AWS CDK), Docker digunakan secara default untuk melakukan tindakan ini. Jika Anda ingin menggunakan alat manajemen kontainer yang berbeda, Anda dapat mengganti Docker melalui variabel `CDK_DOCKER` lingkungan.

## Contoh: Buat dan publikasikan aset gambar kontainer dengan AWS CDK
<a name="build-containers-intro-example"></a>

Berikut ini adalah contoh sederhana dari aplikasi AWS CDK yang membangun dan menerbitkan aset container ke Amazon Elastic Container Registry (Amazon ECR) menggunakan Docker secara default:

 **Struktur proyek**   

```
my-cdk-app/
├── lib/
│   ├── my-stack.ts
│   └── docker/
│       ├── Dockerfile
│       └── app/
│           └── index.js
├── bin/
│   └── my-cdk-app.ts
├── package.json
├── tsconfig.json
└── cdk.json
```

 **Dockerfile**   

```
FROM public.ecr.aws/lambda/nodejs:16

# Copy application code
COPY app/ /var/task/

# (Optional) Install dependencies
# RUN npm install

# The Lambda Node.js base image looks for index.handler by default
```

 **Kode aplikasi**   
Dalam `lib/docker/app/index.js`:  

```
console.log("Hello from inside the container!");
```

 **Tumpukan CDK**   

```
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as ecr_assets from 'aws-cdk-lib/aws-ecr-assets';

export class MyStack extends cdk.Stack {
  constructor(scope: Construct, id: string) {
    super(scope, id);

    // Define a Docker image asset
    const dockerImageAsset = new ecr_assets.DockerImageAsset(this, 'MyDockerImage', {
      directory: 'lib/docker', // Path to the directory containing the Dockerfile
    });

    // Output the ECR URI
    new cdk.CfnOutput(this, 'ECRImageUri', {
      value: dockerImageAsset.imageUri,
    });
  }
}
```

 **Aplikasi CDK**   

```
#!/usr/bin/env node
import * as cdk from 'aws-cdk-lib';
import { MyStack } from '../lib/my-stack';

const app = new cdk.App();
new MyStack(app, 'MyStack');
```

Saat kami menjalankan`cdk deploy`, AWS Cloud Development Kit (AWS CDK) Command Line Interface (CLI) melakukan hal berikut:

1.  **Bangun image Docker** — Jalankan `docker build` secara lokal berdasarkan `Dockerfile` pada direktori tertentu ()`lib/docker`.

1.  **Tag gambar** — Jalankan `docker tag` untuk menandai gambar yang dibangun dengan hash unik, berdasarkan konten gambar.

1.  **Publikasikan ke Amazon ECR** - Jalankan `docker push` untuk mempublikasikan gambar kontainer ke repositori Amazon ECR. Repositori ini harus sudah ada. Itu dibuat selama proses bootstrapping default.

1.  **Keluarkan URI Gambar** - Setelah penerapan berhasil, URI ECR Amazon dari image kontainer yang dipublikasikan akan dikeluarkan di command prompt Anda. Ini adalah URI gambar Docker kami di Amazon ECR.

## Cara mengganti Docker dengan alat manajemen kontainer lain
<a name="build-container-replace"></a>

Gunakan variabel `CDK_DOCKER` lingkungan untuk menentukan jalur ke biner alat manajemen kontainer pengganti Anda. Berikut ini adalah contoh mengganti Docker dengan Finch:

```
$ which finch
/usr/local/bin/finch # Locate the path to the binary

$ export CDK_DOCKER='/usr/local/bin/finch' # Set the environment variable

$ cdk deploy # Deploy using the replacement
```

Aliasing atau penautan tidak didukung. Untuk mengganti Docker, Anda harus menggunakan variabel `CDK_DOCKER` lingkungan.

## Mesin pengganti drop-in Docker yang didukung
<a name="build-container-supported"></a>

 Finch didukung, meskipun mungkin ada beberapa fitur Docker yang tidak tersedia atau mungkin bekerja secara berbeda saat alat berkembang. Untuk informasi lebih lanjut tentang Finch, lihat [Siap Penerbangan: Mengumumkan Finch](https://aws.amazon.com/blogs/opensource/ready-for-flight-announcing-finch-1-0-ga/) 1.0 GA\$1 di *Blog AWS Open Source*.

Alat manajemen kontainer lainnya mungkin berfungsi. CDK tidak memeriksa pengganti Docker mana yang Anda gunakan untuk menentukan apakah itu didukung. Jika alat memiliki perintah Docker yang setara dan berperilaku serupa, itu akan berfungsi.