

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

# Tutorial: Buat dan dorong gambar Docker ke Amazon ECR dengan CodePipeline (tipe V2)
<a name="tutorials-ecr-build-publish"></a>

Tutorial ini membantu Anda membuat tindakan build CodePipeline yang berjalan dan mendorong image Docker Anda ke Amazon ECR setelah perubahan pada kode sumber Anda. Tutorial ini juga menunjukkan kepada Anda cara menambahkan tindakan penerapan Amazon ECS yang menyebarkan gambar yang Anda dorong.

**penting**  
Sebagai bagian dari pembuatan pipa di konsol, ember artefak S3 akan digunakan CodePipeline untuk artefak. (Ini berbeda dari bucket yang digunakan untuk aksi sumber S3.) Jika bucket artefak S3 berada di akun yang berbeda dari akun untuk pipeline Anda, pastikan bucket artefak S3 dimiliki oleh Akun AWS yang aman dan dapat diandalkan.

**catatan**  
Tutorial ini adalah untuk tindakan ECRBuild AndPublish build untuk CodePipeline pipeline dengan repositori GitHub sumber dan tindakan standar Amazon ECS untuk menerapkan ke cluster Amazon ECS. Untuk tutorial yang menggunakan pipeline dengan repositori gambar ECR sebagai sumber untuk tindakan penerapan Amazon ECS ke CodeDeploy biru/hijau, lihat. CodePipeline [Tutorial: Membuat pipeline dengan sumber dan ECS-to-CodeDeploy penerapan Amazon ECR](tutorials-ecs-ecr-codedeploy.md)

**penting**  
Tindakan ini menggunakan CodeBuild komputasi CodePipeline terkelola untuk menjalankan perintah di lingkungan build. Menjalankan tindakan perintah akan dikenakan biaya terpisah di AWS CodeBuild.

## Prasyarat
<a name="tutorials-ecr-build-publish-prereqs"></a>

Ada beberapa sumber daya yang harus Anda miliki sebelum Anda dapat menggunakan tutorial ini untuk membuat pipeline CD Anda. Berikut adalah hal-hal yang Anda butuhkan untuk memulai:

**catatan**  
Semua sumber daya ini harus dibuat dalam AWS Wilayah yang sama.
+ Sebuah repositori kontrol sumber (tutorial ini menggunakan GitHub) di mana Anda akan menambahkan berikut untuk tutorial ini:
  + Pada Langkah 1, Anda akan menambahkan contoh Dockerfile ke repositori sumber Anda sebagai artefak input untuk tindakan build di. ECRBuild AndPublish CodePipeline
  + Pada Langkah 2, Anda akan menambahkan contoh file imagedefinitions.json ke repositori sumber Anda sebagai persyaratan untuk tindakan penerapan standar Amazon ECS di. CodePipeline
+ Repositori gambar Amazon ECR yang berisi gambar yang telah Anda buat dari Dockerfile Anda. Untuk informasi selengkapnya, lihat [Membuat Repositori](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) dan [Mendorong Gambar](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html) di *Panduan Pengguna Amazon Elastic Container Registry*.
+ Cluster dan layanan Amazon ECS yang dibuat di Wilayah yang sama dengan repositori gambar. Untuk informasi selengkapnya, lihat [Membuat Cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create_cluster.html) dan [Membuat Layanan](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-service.html) di *Panduan Pengembang Layanan Amazon Elastic Container*.

Setelah Anda memenuhi prasyarat ini, Anda dapat melanjutkan dengan tutorial dan membuat pipeline CD Anda.

## Langkah 1: Tambahkan Dockerfile ke repositori sumber Anda
<a name="tutorials-ecr-build-publish-file"></a>

Tutorial ini menggunakan ECRBuild AndPublish tindakan untuk membangun gambar Docker Anda dan mendorong gambar ke Amazon ECR. Tindakan komputasi terkelola CodePipeline digunakan CodeBuild untuk menjalankan perintah untuk login ECR dan push gambar. Anda tidak perlu menambahkan `buildspec.yml` file ke repositori kode sumber Anda untuk memberi tahu CodeBuild cara melakukannya. Anda hanya menyediakan Dockerfile di repositori Anda sebagai berikut untuk contoh ini.

Tempel teks contoh ini untuk membuat `Dockerfile` file Anda. Sampel Dockerfile ini sama dengan sampel yang digunakan dalam instruksi gambar ECR dalam prasyarat.

```
FROM public.ecr.aws/amazonlinux/amazonlinux:latest

# Install dependencies
RUN yum update -y && \
 yum install -y httpd

# Install apache and write hello world message
RUN echo 'Hello World!' > /var/www/html/index.html

# Configure apache
RUN echo 'mkdir -p /var/run/httpd' >> /root/run_apache.sh && \
 echo 'mkdir -p /var/lock/httpd' >> /root/run_apache.sh && \
 echo '/usr/sbin/httpd -D FOREGROUND' >> /root/run_apache.sh && \
 chmod 755 /root/run_apache.sh

EXPOSE 80

CMD /root/run_apache.sh
```

**Untuk menambahkan `Dockerfile` file ke repositori sumber Anda**

1. Buka editor teks dan kemudian salin dan tempel Dockerfile di atas ke file baru.

1. Komit dan dorong `Dockerfile` file Anda ke repositori sumber Anda.

   1. Tambahkan file.

      ```
      git add .
      ```

   1. Lakukan perubahan.

      ```
      git commit -m "Adding Dockerfile."
      ```

   1. Dorong komit.

      ```
      git push
      ```

   Pastikan untuk menempatkan file di tingkat root repositori Anda.

   ```
   / Dockerfile
   ```

## Langkah 2: Tambahkan file imagedefinitions.json ke repositori sumber Anda
<a name="w2aac13b9c15"></a>

Tutorial ini menggunakan tindakan penerapan standar Amazon ECS untuk menyebarkan container Anda CodePipeline ke cluster Amazon ECS Anda. Tindakan penerapan standar Amazon ECS memerlukan file imagedefinitions.json yang berisi nama gambar dan URI Anda. Untuk informasi selengkapnya tentang file imagedefinitions.json, lihat. [file imagedefinitions.json untuk tindakan penerapan standar Amazon ECS](file-reference.md#pipelines-create-image-definitions)

Tempel teks contoh ini untuk membuat `imagedefinitions.json` file Anda. Gunakan nama di Dockerfile Anda, seperti`hello-world`, dan gunakan URI dari repositori Amazon ECR tempat gambar disimpan.

```
[
  {
    "name": "hello-world",
    "imageUri": "{{ACCOUNT-ID}}.dkr.ecr.us-east-1.amazonaws.com/actions/image-repo"
  }
]
```

**Untuk menambahkan `imagedefinitions.json` file ke repositori sumber Anda**

1. Buka editor teks lalu salin dan tempel contoh di atas ke file baru.

1. Komit dan dorong `imagedefinitions.json` file Anda ke repositori sumber Anda.

   1. Tambahkan file.

      ```
      git add .
      ```

   1. Lakukan perubahan.

      ```
      git commit -m "Adding imagedefinitions.json."
      ```

   1. Dorong komit.

      ```
      git push
      ```

   Pastikan untuk menempatkan file di tingkat root repositori Anda.

   ```
   / imagedefinitions.json
   ```

## Langkah 3: Membuat pipeline Anda
<a name="tutorials-ecr-build-publish-pipeline"></a>

Gunakan CodePipeline wizard untuk membuat tahapan pipeline dan menghubungkan repositori sumber Anda.

**Untuk membuat alur Anda**

1. Buka CodePipeline konsol di [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

1. Pada halaman **Selamat Datang**, halaman **Memulai**, atau halaman **Pipelines**, pilih **Buat pipeline**.

1. Pada **Langkah 1: Pilih halaman opsi pembuatan**, di bawah **Opsi pembuatan**, pilih opsi **Build custom pipeline**. Pilih **Berikutnya**.

1. Pada **Langkah 2: Pilih pengaturan pipeline**, dalam **nama Pipeline**, masukkan**MyPipeline**.

1. CodePipeline menyediakan pipa tipe V1 dan V2, yang berbeda dalam karakteristik dan harga. Jenis V2 adalah satu-satunya jenis yang dapat Anda pilih di konsol. Untuk informasi selengkapnya, lihat [jenis pipa](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-types-planning.html?icmpid=docs_acp_help_panel). Untuk informasi tentang harga CodePipeline, lihat [Harga](https://aws.amazon.com/codepipeline/pricing/).

1. Dalam **peran Layanan**, pilih **Peran layanan baru** CodePipeline untuk memungkinkan membuat peran layanan di IAM.

1. **Biarkan pengaturan di bawah **Pengaturan lanjutan** pada defaultnya, lalu pilih Berikutnya.**

1. Pada **Langkah 3: Tambahkan halaman tahap sumber**, tambahkan tahap sumber:

   1. Di **penyedia Sumber**, pilih **GitHub (melalui GitHub Aplikasi)**.

   1. Di bawah **Koneksi**, pilih koneksi yang ada atau buat yang baru. Untuk membuat atau mengelola koneksi untuk tindakan GitHub sumber Anda, lihat[GitHub koneksi](connections-github.md).

   1. Dalam nama **Repositori, pilih nama** repositori Anda GitHub .

   1. Di **cabang Default**, pilih cabang yang ingin Anda tentukan saat pipeline dimulai secara manual atau dengan peristiwa sumber yang bukan tag Git. Jika sumber perubahan bukan pemicu atau jika eksekusi pipeline dimulai secara manual, maka perubahan yang digunakan akan menjadi komit HEAD dari cabang default.

   Pilih **Berikutnya**.

1. Pada **Langkah 4: Tambahkan halaman tahap build**, pilih **Penyedia build lain** pilih **ECRBuildAndPublish**.  
![Tambahkan tindakan build Amazon ECR ke pipeline Anda.](http://docs.aws.amazon.com/id_id/codepipeline/latest/userguide/images/ecrbuild-wizard.png)

   1. Untuk **nama repositori ECR, pilih repositori** gambar Anda.

   1. Pilih **Berikutnya**.

1. Pada **Langkah 5: Tambahkan tahap pengujian**, pilih **Lewati tahap pengujian**, lalu terima pesan peringatan dengan memilih **Lewati** lagi. 

   Pilih **Berikutnya**.

1. Pada **Langkah 6: Tambahkan halaman tahap penerapan**, pilih **Lewati tahap penerapan**. Anda akan menambahkan tindakan ECS pada langkah berikut.

1. Pada halaman **Langkah 7: Tinjau**, tinjau konfigurasi pipeline Anda dan pilih **Buat pipeline** untuk membuat pipeline.

1. Edit pipeline Anda untuk menambahkan tindakan penerapan Amazon ECS ke pipeline Anda:

   1. Di kanan atas, pilih **Edit**.

   1. Di bagian bawah diagram, pilih **\+ Tambahkan tahap**. Dalam **nama Panggung**, masukkan nama, seperti**Deploy**.

   1. Pilih **\+ Tambahkan grup tindakan**.

   1. Di **Nama tindakan**, masukkan nama. 

   1. Di **penyedia Action**, pilih Amazon ECS. Izinkan **Wilayah** ke default ke Wilayah alur.

   1. Dalam **artefak Input**, pilih artefak input dari tahap sumber, seperti. `SourceArtifact` 

   1. Untuk **nama Cluster**, pilih klaster Amazon ECS tempat layanan Anda berjalan.

   1. Untuk **nama Layanan**, pilih layanan yang akan diperbarui.

   1. Pilih **Simpan**.

   1. Di panggung yang Anda edit, pilih **Selesai**. Di AWS CodePipeline panel, pilih **Simpan**, lalu pilih **Simpan** pada pesan peringatan.

   1. Untuk mengirimkan perubahan dan memulai pembuatan pipeline, pilih **Rilis perubahan**, lalu pilih **Rilis**.

1. Setelah pipa berjalan, lihat struktur dan status pipa.  
![Diagram konsol yang menunjukkan proses pipeline yang berhasil dengan aksi build Amazon ECR dan tindakan penerapan Amazon ECS ditambahkan ke pipeline Anda.](http://docs.aws.amazon.com/id_id/codepipeline/latest/userguide/images/ecrbuild-ecsaction.png)

1. Setelah pipeline berhasil berjalan, pilih **Lihat detail** untuk melihat log pada tindakan untuk melihat keluaran tindakan komputasi terkelola.  
![Lihat log untuk tindakan build Amazon ECR di pipeline Anda.](http://docs.aws.amazon.com/id_id/codepipeline/latest/userguide/images/ecrbuild-logs.png)

1. Memecahkan masalah tindakan yang gagal. Misalnya, tindakan penerapan ECS dapat gagal jika file imagedefinitions.json tidak ada di repositori sumber. Berikut ini adalah contoh pesan kesalahan yang ditampilkan ketika file imagedefinitions.json hilang.   
![Lihat log untuk tindakan build Amazon ECR di pipeline Anda.](http://docs.aws.amazon.com/id_id/codepipeline/latest/userguide/images/ecrbuild-ecsdebug.png)

## Langkah 4: Uji Pipa Anda
<a name="tutorials-ecr-build-publish-test"></a>

Pipeline Anda harus memiliki segalanya untuk menjalankan penerapan AWS berkelanjutan end-to-end asli. Sekarang, uji fungsinya dengan mendorong perubahan kode ke repositori sumber Anda.

**Untuk menguji pipa Anda**

1. Buat perubahan kode ke repositori sumber yang dikonfigurasi, komit, dan dorong perubahan.

1. Buka CodePipeline konsol di [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

1. Pilih pipeline Anda dari daftar.

1. Perhatikan kemajuan pipa melalui tahapannya. Pipeline Anda harus selesai dan tindakan Anda mendorong image Docker ke ECR yang dibuat dari perubahan kode Anda.