Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Contoh 'Publikasikan gambar Docker ke repositori gambar Amazon ECR' untuk CodeBuild
Sampel ini menghasilkan gambar Docker sebagai output build dan kemudian mendorong gambar Docker ke repositori gambar Amazon Elastic Container Registry (Amazon ECR). Anda dapat menyesuaikan sampel ini untuk mendorong gambar Docker ke Docker Hub. Untuk informasi selengkapnya, lihat Sesuaikan sampel 'Publikasikan gambar Docker ke Amazon ECR' untuk didorong ke Docker Hub.
Untuk mempelajari cara membuat image Docker dengan menggunakan image build Docker kustom (docker:dinddi Docker Hub), lihat kami. Docker dalam sampel gambar khusus
Sampel ini diuji dengan referensi. golang:1.12
Sampel ini menggunakan fitur build Docker multi-tahap baru, yang menghasilkan gambar Docker sebagai output build. Kemudian mendorong gambar Docker ke repositori gambar Amazon ECR. Multi-stage Pembuatan gambar Docker membantu mengurangi ukuran gambar Docker akhir. Untuk informasi selengkapnya, lihat Menggunakan build multi-tahap dengan Doc
penting
Menjalankan sampel ini dapat mengakibatkan tagihan ke AWS akun Anda. Ini termasuk kemungkinan biaya untuk AWS CodeBuild dan untuk AWS sumber daya dan tindakan yang terkait dengan Amazon S3, AWS KMS, CloudWatch Logs, dan Amazon ECR. Untuk informasi selengkapnya, lihat CodeBuild harga
Topik
Jalankan contoh 'Publikasikan gambar Docker ke Amazon ECR'
Gunakan prosedur berikut untuk menjalankan sampel yang menerbitkan gambar Docker ke Amazon ECR. Untuk informasi lebih lanjut tentang sampel ini, lihatContoh 'Publikasikan gambar Docker ke repositori gambar Amazon ECR' untuk CodeBuild.
Untuk menjalankan sampel ini
-
Jika Anda sudah memiliki repositori gambar di Amazon ECR yang ingin Anda gunakan, lewati ke langkah 3. Jika tidak, jika Anda menggunakan pengguna alih-alih akun AWS root atau pengguna administrator untuk bekerja dengan Amazon ECR, tambahkan pernyataan ini (antara
### BEGIN ADDING STATEMENT HERE ###dan### END ADDING STATEMENT HERE ###) ke pengguna (atau grup IAM yang dikaitkan dengan pengguna). Menggunakan akun AWS root tidak disarankan. Pernyataan ini memungkinkan pembuatan repositori Amazon ECR untuk menyimpan gambar Docker. Ellipses (...) digunakan untuk singkatnya dan untuk membantu Anda menemukan tempat menambahkan pernyataan. Jangan menghapus pernyataan apa pun, dan jangan mengetikkan elips ini ke dalam kebijakan. Untuk informasi selengkapnya, lihat Bek erja dengan kebijakan sebaris menggunakan Konsol Manajemen AWS dalam Panduan pengguna.catatan
Entitas IAM yang mengubah kebijakan ini harus memiliki izin di IAM untuk mengubah kebijakan.
-
Buat repositori gambar di Amazon ECR. Pastikan untuk membuat repositori di Wil AWS ayah yang sama tempat Anda membuat lingkungan build dan menjalankan build Anda. Untuk informasi selengkapnya, lihat Membuat repositori di Panduan Pengguna Amazon ECR. Nama repositori ini harus sesuai dengan nama repositori yang Anda tentukan nanti dalam prosedur ini, diwakili oleh variabel
IMAGE_REPO_NAMElingkungan. Pastikan kebijakan repositori Amazon ECR memberikan akses push gambar untuk peran IAM CodeBuild layanan Anda. -
Tambahkan pernyataan ini (antara
### BEGIN ADDING STATEMENT HERE ###dan### END ADDING STATEMENT HERE ###) ke kebijakan yang Anda lampirkan ke peran AWS CodeBuild layanan Anda. Pernyataan ini memungkinkan CodeBuild untuk mengunggah gambar Docker ke repositori Amazon ECR. Ellipses (...) digunakan untuk singkatnya dan untuk membantu Anda menemukan tempat menambahkan pernyataan. Jangan menghapus pernyataan apa pun, dan jangan mengetikkan elips ini ke dalam kebijakan.catatan
Entitas IAM yang mengubah kebijakan ini harus memiliki izin di IAM untuk mengubah kebijakan.
-
Buat file seperti yang dijelaskan di Berkas bagian Struktur direktori dan topik ini, lalu unggah ke bucket input S3 atau repositori AWS CodeCommit, GitHub, atau Bitbucket. Untuk informasi selengkapnya, lihat Referensi file definisi gambar di Panduan AWS CodePipeline Pengguna.
penting
Jangan mengunggah
, hanya file di dalamnya(root directory name).(root directory name)Jika Anda menggunakan bucket input S3, pastikan untuk membuat file ZIP yang berisi file tersebut, lalu unggah ke bucket input. Jangan tambahkan
ke file ZIP, hanya file di dalamnya(root directory name).(root directory name) -
Buat proyek build, jalankan build, dan lihat informasi build.
Jika Anda menggunakan konsol untuk membuat proyek Anda:
-
Untuk Sistem operasi, pilih Ubuntu.
-
Untuk Waktu aktif, pilih Standar.
-
Untuk Gambar, pilih aws/codebuild /standard:5.0.
-
Tambahkan variabel lingkungan berikut:
-
AWS_DEFAULT_REGION dengan nilai
region-ID -
AWS_ACCOUNT_ID dengan nilai
account-ID -
IMAGE_TAG dengan nilai Terbaru
-
IMAGE_REPO_NAME dengan nilai
Amazon-ECR-repo-name
-
Jika Anda menggunakan AWS CLI untuk membuat proyek build, JSON-formatted input ke
create-projectperintah mungkin terlihat mirip dengan ini. (Ganti placeholder dengan nilai Anda sendiri.){ "name": "sample-docker-project", "source": { "type": "S3", "location": "codebuild-region-ID-account-ID-input-bucket/DockerSample.zip" }, "artifacts": { "type": "NO_ARTIFACTS" }, "environment": { "type": "LINUX_CONTAINER", "image": "aws/codebuild/standard:5.0", "computeType": "BUILD_GENERAL1_SMALL", "environmentVariables": [ { "name": "AWS_DEFAULT_REGION", "value": "region-ID" }, { "name": "AWS_ACCOUNT_ID", "value": "account-ID" }, { "name": "IMAGE_REPO_NAME", "value": "Amazon-ECR-repo-name" }, { "name": "IMAGE_TAG", "value": "latest" } ], }, "serviceRole": "arn:aws:iam::account-ID:role/role-name", "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID" } -
-
Konfirmas CodeBuild ikan bahwa berhasil mendorong gambar Docker ke repositori:
-
Buka konsol Amazon ECR di https://console.aws.amazon.com/ecr/
. -
Pilih nama repositori. Gambar harus dicantumkan di kolom Tag gambar.
-
Struktur direktori
Contoh ini mengasumsikan struktur direktori ini.
(root directory name)
├── buildspec.yml
└── Dockerfile
Berkas
Sampel ini menggunakan file-file ini.
buildspec.yml(dalam)(root directory
name)
version: 0.2 phases: pre_build: commands: - echo Logging in to Amazon ECR... - aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com build: commands: - echo Build started on `date` - echo Building the Docker image... - docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG . - docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG post_build: commands: - echo Build completed on `date` - echo Pushing the Docker image... - docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
Dockerfile(dalam)(root directory
name)
FROM golang:1.12-alpine AS build #Install git RUN apk add --no-cache git #Get the hello world package from a GitHub repository RUN go get github.com/golang/example/hello WORKDIR /go/src/github.com/golang/example/hello # Build the project and send the output to /bin/HelloWorld RUN go build -o /bin/HelloWorld FROM golang:1.12-alpine #Copy the build's output binary from the previous build container COPY --from=build /bin/HelloWorld /bin/HelloWorld ENTRYPOINT ["/bin/HelloWorld"]
catatan
CodeBuild mengesampingkan ENTRYPOINT untuk gambar Docker kustom.