Esempio di «Pubblica immagine Docker su un archivio di ECR immagini Amazon» per CodeBuild - AWS CodeBuild

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esempio di «Pubblica immagine Docker su un archivio di ECR immagini Amazon» per CodeBuild

Questo esempio produce come output di build un'immagine Docker e quindi invia l'immagine Docker a un repository di immagini Amazon Elastic Container Registry (AmazonECR). Questo esempio può essere modificato per inviare l'immagine Docker a Docker Hub. Per ulteriori informazioni, consulta Adatta l'esempio «Pubblica immagine Docker su AmazonECR» per inviarlo a Docker Hub.

Per imparare a compilare un'immagine Docker utilizzando un'immagine Docker di compilazione personalizzata, (docker:dind in Docker Hub), consulta Docker in un esempio di immagine personalizzata.

Questo esempio è stato testato sulla base di golang:1.12.

Questo esempio utilizza la nuova funzione di compilazioni Docker a più fasi, che produce un'immagine Docker come output della compilazione. Quindi invia l'immagine Docker a un archivio di ECR immagini Amazon. Le compilazioni di immagini Docker a più fasi aiutano a ridurre la dimensione dell'immagine Docker finale. Per ulteriori informazioni, consultare la pagina relativa all'utilizzo di compilazioni a più fasi con Docker.

Importante

L'esecuzione di questo esempio potrebbe comportare addebiti sul tuo account. AWS Questi includono eventuali addebiti per AWS CodeBuild e per AWS risorse e azioni relative ad Amazon S3 AWS KMS, CloudWatch Logs e Amazon. ECR Per ulteriori informazioni, consulta CodeBuild i prezzi, i prezzi di Amazon S3, i prezzi, i AWS Key Management Service prezzi di Amazon e CloudWatch i prezzi di Amazon Elastic Container Registry.

Esegui l'esempio «Pubblica immagine Docker su AmazonECR»

Utilizza la procedura seguente per eseguire l'esempio che pubblica un'immagine Docker su Amazon. ECR Per ulteriori informazioni su questo esempio, consulta. Esempio di «Pubblica immagine Docker su un archivio di ECR immagini Amazon» per CodeBuild

Per eseguire questo esempio
  1. Se disponi già di un archivio di immagini in Amazon che ECR desideri utilizzare, vai al passaggio 3. Altrimenti, se utilizzi un utente anziché un account AWS root o un utente amministratore per lavorare con AmazonECR, aggiungi questa istruzione (tra ### BEGIN ADDING STATEMENT HERE ### e ### END ADDING STATEMENT HERE ###) all'utente (o al IAM gruppo a cui l'utente è associato). L'utilizzo di un account AWS root non è consigliato. Questa istruzione consente la creazione di ECR repository Amazon per l'archiviazione di immagini Docker. Le ellissi (...) vengono utilizzate per brevità e per aiutare i clienti a individuare il punto in cui aggiungere l'istruzione. Non rimuovere nessuna istruzione e non digitare queste ellissi nella policy. Per ulteriori informazioni, consulta Lavorare con le politiche in linea utilizzando la Guida per l'utente. AWS Management Console

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

    L'IAMentità che modifica questa politica deve avere l'autorizzazione IAM a modificare le politiche.

  2. Crea un archivio di immagini in AmazonECR. Assicurati di creare il repository nella stessa AWS regione in cui crei l'ambiente di compilazione ed esegui la build. Per ulteriori informazioni, consulta la sezione Creazione di un repository nella Amazon ECR User Guide. Il nome di questo repository deve essere uguale a quello che viene specificato più avanti in questa procedura, rappresentato dalla variabile di ambiente IMAGE_REPO_NAME. Assicurati che la politica del ECR repository di Amazon conceda l'accesso tramite push alle immagini per il tuo ruolo di CodeBuild servizioIAM.

  3. Aggiungi questa dichiarazione (tra ### BEGIN ADDING STATEMENT HERE ### e ### END ADDING STATEMENT HERE ###) alla politica che hai allegato al tuo ruolo AWS CodeBuild di servizio. Questa dichiarazione consente di CodeBuild caricare immagini Docker nei ECR repository Amazon. Le ellissi (...) vengono utilizzate per brevità e per aiutare i clienti a individuare il punto in cui aggiungere l'istruzione. Non rimuovere nessuna istruzione e non digitare queste ellissi nella policy.

    { "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" }
    Nota

    L'IAMentità che modifica questa politica deve avere l'autorizzazione IAM a modificare le politiche.

  4. Crea i file come descritto nelle File sezioni Struttura delle directory e di questo argomento, quindi caricali in un bucket di input S3 o in un repository AWS CodeCommit GitHub, o Bitbucket. Per ulteriori informazioni, consulta il riferimento al file delle definizioni delle immagini nella Guida per l'utente.AWS CodePipeline

    Importante

    Non caricare (root directory name), ma solo i file all'interno di (root directory name)

    Se utilizzi un bucket di input S3, assicurati di creare un ZIP file che contenga i file, quindi caricalo nel bucket di input. Non aggiungete (root directory name) al ZIP file, ma solo i file al suo interno. (root directory name)

  5. Crea un progetto di compilazione, esegui la build e visualizza le informazioni sulla build.

    Se utilizzi la console per creare il progetto:

    1. In Operating system (Sistema operativo), seleziona Ubuntu.

    2. In Runtime, seleziona Standard.

    3. Per Immagine, scegli aws/codebuild/standard:5.0.

    4. Aggiungere le seguenti variabili di ambiente:

      • AWS_ DEFAULT _ REGION con un valore di region-ID

      • AWS_ACCOUNT_IDcon un valore di account-ID

      • IMAGE_ TAG con un valore di Latest

      • IMAGE_ REPO _ NAME con un valore di Amazon-ECR-repo-name

    Se usi il AWS CLI per creare il progetto di compilazione, l'input in JSON formato -del create-project comando potrebbe avere un aspetto simile a questo. (Sostituire i segnaposto con i propri valori).

    { "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. Conferma di aver CodeBuild inviato correttamente l'immagine Docker al repository:

    1. Apri la ECR console Amazon all'indirizzo https://console.aws.amazon.com/ecr/.

    2. Selezionare il nome del repository L'immagine deve essere elencata nella colonna Tag immagine.

Struttura delle directory

Questo esempio assume la seguente struttura delle directory.

(root directory name) ├── buildspec.yml └── Dockerfile

File

Questo esempio utilizza i seguenti file.

buildspec.yml (in (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 (in (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"]
Nota

CodeBuild sostituisce le immagini ENTRYPOINT Docker personalizzate.