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 «Pubblicazione di un'immagine Docker in un archivio di immagini Amazon ECR» per CodeBuild
Questo esempio produce come output di compilazione un'immagine Docker e quindi invia l'immagine Docker a un repository di immagini Amazon Elastic Container Registry (Amazon ECR). Questo esempio può essere modificato per inviare l'immagine Docker a Docker Hub. Per ulteriori informazioni, consulta Adatta l'esempio 'Publish Docker image to Amazon ECR' da inviare 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 repository di immagini Amazon ECR. Multi-stage Le build di immagini Docker aiutano a ridurre le dimensioni 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
Argomenti
Esegui l'esempio «Pubblica un'immagine Docker su Amazon ECR»
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 «Pubblicazione di un'immagine Docker in un archivio di immagini Amazon ECR» per CodeBuild
Per eseguire questo esempio
-
Se hai già un repository di immagini in Amazon ECR che desideri utilizzare, vai al passaggio 3. Altrimenti, se utilizzi un utente anziché un account AWS root o un utente amministratore per lavorare con Amazon ECR, aggiungi questa dichiarazione (tra
### BEGIN ADDING STATEMENT HERE ###e### END ADDING STATEMENT HERE ###) all'utente (o al gruppo IAM a cui è associato l'utente). L'utilizzo di un account AWS root non è consigliato. Questa dichiarazione consente la creazione di repository Amazon ECR 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 Working with inline policies using the Console di gestione AWS in the user Guide.Nota
L'entità IAM che modifica questa policy deve disporre dell'autorizzazione in IAM per modificare le policy.
-
Crea un repository di immagini in Amazon ECR. Assicurati di creare il repository nella stessa AWS regione in cui crei l'ambiente di compilazione ed esegui la build. Per ulteriori informazioni, consulta Creating a 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 policy del repository Amazon ECR conceda l'accesso push all'immagine per il tuo ruolo IAM del servizio. CodeBuild -
Aggiungi questa dichiarazione (tra
### BEGIN ADDING STATEMENT HERE ###e### END ADDING STATEMENT HERE ###) alla policy che hai allegato al tuo AWS CodeBuild ruolo di servizio. Questa dichiarazione consente di CodeBuild caricare immagini Docker nei repository Amazon ECR. 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.Nota
L'entità IAM che modifica questa policy deve disporre dell'autorizzazione in IAM per modificare le policy.
-
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 di definizioni delle immagini nella Guida per l'utente. AWS CodePipeline
Importante
Non caricare
, ma solo i file all'interno di(root directory name)(root directory name)Se si sta utilizzando un bucket di input S3, assicurarsi di creare un file ZIP contenente i file, quindi caricarlo nel bucket di input. Non aggiungere
al file ZIP, ma solo i file all'interno di(root directory name)(root directory name) -
Create un progetto di compilazione, eseguitelo e visualizzate le informazioni sulla compilazione.
Se utilizzi la console per creare il progetto:
-
In Operating system (Sistema operativo), seleziona Ubuntu.
-
In Runtime, seleziona Standard.
-
Per Image, scegli aws/codebuild /standard:5.0.
-
Aggiungere le seguenti variabili di ambiente:
-
AWS_DEFAULT_REGION con un valore di
region-ID -
AWS_ACCOUNT_ID con un valore di
account-ID -
IMAGE_TAG con un valore di Latest
-
IMAGE_REPO_NAME con un valore di
Amazon-ECR-repo-name
-
Se si utilizza AWS CLI per creare il progetto di compilazione, l' JSON-formatted input del
create-projectcomando potrebbe essere 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" } -
-
Conferma di CodeBuild aver inviato correttamente l'immagine Docker al repository:
-
Apri la console Amazon ECR all'indirizzo. https://console.aws.amazon.com/ecr/
-
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 Docker ENTRYPOINT personalizzate.