Contoh 'Publikasikan gambar Docker ke repositori ECR gambar Amazon' untuk CodeBuild - AWS CodeBuild

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 ECR gambar Amazon' untuk CodeBuild

Sampel ini menghasilkan gambar Docker sebagai output build dan kemudian mendorong image Docker ke repositori gambar Amazon Elastic Container Registry (AmazonECR). Anda dapat mengadaptasi sampel ini untuk mendorong image Docker ke Docker Hub. Untuk informasi selengkapnya, lihat Sesuaikan sampel 'Publikasikan gambar Docker ke ECR Amazon' untuk mendorong ke Docker Hub.

Untuk mempelajari cara membuat image Docker dengan menggunakan image build Docker kustom (docker:dinddi Docker Hub), lihat. Docker dalam sampel gambar khusus

Sampel ini diuji referensigolang:1.12.

Sampel ini menggunakan fitur build Docker multi-tahap baru, yang menghasilkan image Docker sebagai output build. Kemudian mendorong gambar Docker ke repositori ECR gambar Amazon. Pembuatan gambar Docker multi-tahap membantu mengurangi ukuran gambar Docker akhir. Untuk informasi selengkapnya, lihat Menggunakan build multi-tahap dengan Docker.

penting

Menjalankan sampel ini dapat mengakibatkan biaya ke AWS akun Anda. Ini termasuk kemungkinan biaya untuk AWS CodeBuild dan untuk AWS sumber daya dan tindakan yang terkait dengan Amazon S3,, CloudWatch Log AWS KMS, dan Amazon. ECR Untuk informasi selengkapnya, lihat CodeBuild harga, harga Amazon S3, harga, AWS Key Management Service harga Amazon, dan CloudWatch harga Amazon Elastic Container Registry.

Jalankan sampel 'Publikasikan gambar Docker ke ECR Amazon'

Gunakan prosedur berikut untuk menjalankan sampel yang menerbitkan image Docker ke Amazon. ECR Untuk informasi lebih lanjut tentang sampel ini, lihat. Contoh 'Publikasikan gambar Docker ke repositori ECR gambar Amazon' untuk CodeBuild

Untuk menjalankan sampel ini
  1. Jika Anda sudah memiliki repositori gambar di Amazon yang ingin ECR Anda gunakan, lewati ke langkah 3. Jika tidak, jika Anda menggunakan pengguna alih-alih akun AWS root atau pengguna administrator untuk bekerja dengan AmazonECR, tambahkan pernyataan ini (antara ### BEGIN ADDING STATEMENT HERE ### and ### END ADDING STATEMENT HERE ###) ke pengguna (atau IAM grup yang dikaitkan dengan pengguna). Menggunakan akun AWS root tidak dianjurkan.Pernyataan ini memungkinkan ECR pembuatan repositori Amazon untuk menyimpan gambar Docker. Ellipses (...) digunakan untuk singkatnya dan untuk membantu Anda menemukan tempat untuk menambahkan pernyataan. Jangan menghapus pernyataan apa pun, dan jangan ketik elips ini ke dalam kebijakan. Untuk informasi selengkapnya, lihat Bekerja dengan kebijakan sebaris menggunakan AWS Management Console dalam Panduan pengguna.

    { "Statement": [ ### BEGIN ADDING STATEMENT HERE ### { "Action": [ "ecr:CreateRepository" ], "Resource": "*", "Effect": "Allow" }, ### END ADDING STATEMENT HERE ### ... ], "Version": "2012-10-17" }
    catatan

    IAMEntitas yang mengubah kebijakan ini harus memiliki izin IAM untuk mengubah kebijakan.

  2. Buat repositori gambar di Amazon. ECR Pastikan untuk membuat repositori di AWS Wilayah yang sama tempat Anda membuat lingkungan build dan menjalankan build Anda. Untuk informasi selengkapnya, lihat Membuat repositori di ECRPanduan Pengguna Amazon. Nama repositori ini harus cocok dengan nama repositori yang Anda tentukan nanti dalam prosedur ini, yang diwakili oleh variabel lingkungan. IMAGE_REPO_NAME Pastikan kebijakan ECR repositori Amazon memberikan akses push image untuk peran layanan Anda CodeBuild. IAM

  3. Tambahkan pernyataan ini (antara ### BEGIN ADDING STATEMENT HERE ### and ### END ADDING STATEMENT HERE ###) ke kebijakan yang Anda lampirkan pada peran AWS CodeBuild layanan Anda. Pernyataan ini memungkinkan CodeBuild untuk mengunggah gambar Docker ke ECR repositori Amazon. Ellipses (...) digunakan untuk singkatnya dan untuk membantu Anda menemukan tempat untuk menambahkan pernyataan. Jangan menghapus pernyataan apa pun, dan jangan ketik elips ini ke dalam kebijakan.

    { "Statement": [ ### BEGIN ADDING STATEMENT HERE ### { "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:CompleteLayerUpload", "ecr:GetAuthorizationToken", "ecr:InitiateLayerUpload", "ecr:PutImage", "ecr:UploadLayerPart" ], "Resource": "*", "Effect": "Allow" }, ### END ADDING STATEMENT HERE ### ... ], "Version": "2012-10-17" }
    catatan

    IAMEntitas yang mengubah kebijakan ini harus memiliki izin IAM untuk mengubah kebijakan.

  4. 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(root directory name), hanya file di dalamnya(root directory name).

    Jika Anda menggunakan bucket input S3, pastikan untuk membuat ZIP file yang berisi file, lalu unggah ke bucket input. Jangan tambahkan (root directory name) ke ZIP file, hanya file di dalamnya(root directory name).

  5. Buat proyek build, jalankan build, dan lihat informasi build.

    Jika Anda menggunakan konsol untuk membuat proyek Anda:

    1. Untuk Sistem operasi, pilih Ubuntu.

    2. Untuk Waktu aktif, pilih Standar.

    3. Untuk Gambar, pilih aws/codebuild/standard:5.0.

    4. Tambahkan variabel lingkungan berikut:

      • AWSDEFAULT_ _ REGION dengan nilai region-ID

      • AWS_ACCOUNT_IDdengan nilai account-ID

      • IMAGE_ TAG dengan nilai Terbaru

      • IMAGEREPO_ _ NAME dengan nilai Amazon-ECR-repo-name

    Jika Anda menggunakan AWS CLI untuk membuat proyek build, input JSON -format ke create-project perintah 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" }
  6. Konfirmasikan bahwa CodeBuild berhasil mendorong image Docker ke repositori:

    1. Buka ECR konsol Amazon di https://console.aws.amazon.com/ecr/.

    2. Pilih nama repositori. Gambar harus tercantum di kolom tag Gambar.

Struktur direktori

Sampel 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 mengganti ENTRYPOINT untuk gambar Docker khusus.