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à.
Tutorial: creazione e invio di un'immagine Docker ad Amazon ECR con CodePipeline (tipo V2)
Questo tutorial ti aiuta a creare un'azione di compilazione CodePipeline che esegua e invia l'immagine Docker ad Amazon ECR dopo una modifica al codice sorgente. Questo tutorial mostra anche come aggiungere un'azione di distribuzione di Amazon ECS che distribuisca l'immagine inviata.
Importante
Come parte della creazione di una pipeline nella console, un bucket di artefatti S3 verrà utilizzato da for artifacts. CodePipeline (Questo è diverso dal bucket utilizzato per un'azione sorgente S3.) Se il bucket di artefatti S3 si trova in un account diverso dall'account della pipeline, assicurati che il bucket di artefatti S3 sia di proprietà di persone sicure e affidabili. Account AWS
Nota
Questo tutorial illustra l'azione di ECRBuildAndPublish creazione di una CodePipeline pipeline con un repository di GitHub origine e un'azione standard Amazon ECS per la distribuzione in un cluster Amazon ECS. Per un tutorial che utilizza una pipeline con un repository di immagini ECR come origine per un'azione di distribuzione di Amazon ECS, consulta. CodeDeploy blue/green CodePipeline Tutorial: creare una pipeline con una fonte e una distribuzione Amazon ECR ECS-to-CodeDeploy
Importante
Questa azione utilizza il CodeBuild calcolo CodePipeline gestito per eseguire comandi in un ambiente di compilazione. L'esecuzione dell'azione dei comandi comporterà costi separati in. AWS CodeBuild
Prerequisiti
Per utilizzare questo tutorial per creare la pipeline di distribuzione continua, è necessario disporre di alcune risorse. Ecco di cosa hai bisogno prima di iniziare:
Nota
Tutte queste risorse devono essere create all'interno della stessa AWS regione.
-
Un repository di controllo del codice sorgente (utilizzato da questo tutorial GitHub) in cui aggiungerai quanto segue per questo tutorial:
-
Nel passaggio 1, aggiungerai un Dockerfile di esempio al tuo repository di origine come artefatto di input per l'azione di compilazione in. ECRBuildAndPublish CodePipeline
-
Nella fase 2, aggiungerai un file imagedefinitions.json di esempio al tuo repository di origine come requisito per l'azione di distribuzione standard di Amazon ECS in. CodePipeline
-
-
Un repository di immagini Amazon ECR che contiene un'immagine creata dal tuo Dockerfile. Per ulteriori informazioni, consulta Creating a Repository and Pushing an Image nella Amazon Elastic Container Registry User Guide.
-
Un cluster e un servizio Amazon ECS creati nella stessa regione del repository di immagini. Per ulteriori informazioni, consulta Creazione di un cluster e creazione di un servizio nella Amazon Elastic Container Service Developer Guide.
Dopo aver soddisfatto questi prerequisiti, puoi procedere con il tutorial e creare la pipeline di distribuzione continua.
Passaggio 1: aggiungi un Dockerfile al tuo repository di origine
Questo tutorial utilizza l' ECRBuildAndPublish azione per creare l'immagine Docker e inviarla ad Amazon ECR. L'azione di calcolo gestita CodePipeline viene utilizzata CodeBuild per eseguire i comandi per l'accesso ECR e il push dell'immagine. Non è necessario aggiungere un buildspec.yml file al repository del codice sorgente per sapere CodeBuild come farlo. Per questo esempio, fornisci il Dockerfile nel tuo repository solo come segue.
Incolla questo testo di esempio per creare il tuo file. Dockerfile Questo Dockerfile di esempio è lo stesso utilizzato nelle istruzioni dell'immagine ECR nei prerequisiti.
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
Per aggiungere un Dockerfile file nel tuo repository di origine
-
Apri un editor di testo, quindi copia e incolla il Dockerfile qui sopra in un nuovo file.
-
Conferma e inserisci il file
Dockerfilenell'archivio del codice sorgente.-
Aggiungi il file.
git add . -
Conferma la modifica.
git commit -m "Adding Dockerfile." -
Invia la conferma.
git push
Assicurati di posizionare il file al livello principale del tuo repository.
/ Dockerfile -
Passaggio 2: aggiungi un file imagedefinitions.json al tuo repository di origine
Questo tutorial utilizza l'azione di distribuzione standard di Amazon ECS per distribuire il contenitore nel CodePipeline cluster Amazon ECS. L'azione di distribuzione standard di Amazon ECS richiede un file imagedefinitions.json contenente il nome e l'URI dell'immagine. Per ulteriori informazioni sul file imagedefinitions.json, consulta. file imagedefinitions.json per le azioni di distribuzione standard di Amazon ECS
Incolla questo testo di esempio per creare il tuo file. imagedefinitions.json Usa il nome nel tuo Dockerfile, ad esempiohello-world, e usa l'URI del tuo repository Amazon ECR in cui è archiviata l'immagine.
[ { "name": "hello-world", "imageUri": "ACCOUNT-ID.dkr.ecr.us-east-1.amazonaws.com/actions/image-repo" } ]
Per aggiungere un imagedefinitions.json file nel tuo repository di origine
-
Apri un editor di testo, quindi copia e incolla l'esempio precedente in un nuovo file.
-
Conferma e inserisci il file
imagedefinitions.jsonnell'archivio del codice sorgente.-
Aggiungi il file.
git add . -
Conferma la modifica.
git commit -m "Adding imagedefinitions.json." -
Invia la conferma.
git push
Assicurati di posizionare il file al livello principale del tuo repository.
/ imagedefinitions.json -
Fase 3: Creazione della pipeline
Usa la CodePipeline procedura guidata per creare le fasi della pipeline e connettere il tuo repository di origine.
Creazione della pipeline
Apri la console all' CodePipeline indirizzo. https://console.aws.amazon.com/codepipeline/
-
Nella pagina Welcome (Benvenuto), pagina Getting started (Nozioni di base) o pagina Pipelines (Pipeline), scegliere Create pipeline (Crea pipeline).
-
Nella pagina Passaggio 1: scegli l'opzione di creazione, in Opzioni di creazione, scegli l'opzione Crea pipeline personalizzata. Scegli Avanti.
-
Nel passaggio 2: scegli le impostazioni della pipeline, in Nome della pipeline, inserisci.
MyPipeline -
CodePipeline fornisce pipeline di tipo V1 e V2, che si differenziano per caratteristiche e prezzo. Il tipo V2 è l’unico tipo che puoi scegliere nella console. Per ulteriori informazioni, consulta tipi di pipeline. Per informazioni sui prezzi di CodePipeline, vedi Prezzi. https://aws.amazon.com/codepipeline/pricing/
-
In Ruolo di servizio, scegli Nuovo ruolo di servizio CodePipeline per consentire la creazione di un ruolo di servizio in IAM.
-
Lasciare i valori predefiniti delle impostazioni in Advanced settings (Impostazioni avanzate), quindi scegliere Next (Successivo).
-
Nella pagina Fase 3: Aggiungi fase sorgente, aggiungi una fase sorgente:
-
In Source provider, scegli GitHub (tramite GitHub App).
-
In Connessione, scegli una connessione esistente o creane una nuova. Per creare o gestire una connessione per l'azione GitHub sorgente, consultaGitHub connessioni.
-
In Repository name (Nome repository), scegli il nome del repository GitHub .
-
Nel ramo predefinito, scegliete il ramo che desiderate specificare quando la pipeline viene avviata manualmente o con un evento sorgente che non sia un tag Git. Se l'origine della modifica non è il trigger o se l'esecuzione di una pipeline è stata avviata manualmente, la modifica utilizzata sarà il commit HEAD del ramo predefinito.
Scegli Avanti.
-
-
Nella pagina Passaggio 4: Aggiungi fase di compilazione, scegli Altri fornitori di build, quindi scegli ECRBuildAndPublish.
-
Per il nome del repository ECR, scegli il tuo repository di immagini.
-
Scegli Avanti.
-
-
Nel passaggio 5: Aggiungi fase di test, scegli Ignora fase di test, quindi accetta il messaggio di avviso scegliendo nuovamente Ignora.
Scegli Avanti.
-
Nella pagina Passaggio 6: Aggiungi fase di distribuzione, scegli Ignora fase di distribuzione. Aggiungerai l'azione ECS nel passaggio successivo.
-
Nella pagina Passaggio 7: revisione, rivedi la configurazione della pipeline e scegli Crea pipeline per creare la pipeline.
-
Modifica la pipeline per aggiungere l'azione di distribuzione di Amazon ECS alla pipeline:
-
In alto a destra, scegli Edit (Modifica).
-
In fondo al diagramma, scegliere + Add stage (+ Aggiungi fase) In Nome fase immetti un nome, ad esempio
Deploy. -
Scegliere + Add action group (+ Aggiungi gruppo di operazioni).
-
Alla voce Action name (Nome operazione), inserire un nome.
-
In Action provider, scegli Amazon ECS. Consenti a Region (Regione) di preimpostarsi sulla regione della pipeline.
-
In Input artifacts, scegli l'artefatto di input dalla fase di origine, ad esempio.
SourceArtifact -
Per il nome del cluster, scegli il cluster Amazon ECS in cui è in esecuzione il servizio.
-
Per Nome del servizio, scegli il servizio da aggiornare.
-
Selezionare Salva.
-
Nella fase che stai modificando, scegli Done (Fatto). Nel riquadro AWS CodePipeline , scegli Save (Salva) e quindi scegli Save (Salva) sul messaggio di avviso.
-
Per inviare le modifiche e avviare una compilazione tramite pipeline, scegliere Release change (Rilascia modifica) e quindi scegliere Release (Rilascia).
-
-
Dopo l'esecuzione della pipeline, visualizzate la struttura e lo stato della pipeline.
-
Una volta eseguita correttamente la pipeline, scegli Visualizza dettagli per visualizzare i log dell'azione e visualizzare l'output dell'azione di calcolo gestita.
-
Risolvi eventuali azioni non riuscite. Ad esempio, l'azione di distribuzione ECS può fallire se il file imagedefinitions.json non si trova nel repository di origine. Di seguito è riportato un esempio del messaggio di errore che viene visualizzato quando manca il file imagedefinitions.json.
Fase 4: test della pipeline
La tua pipeline dovrebbe avere tutto ciò che serve per eseguire una distribuzione continua nativa end-to-end. AWS Ora, testane la funzionalità inserendo una modifica del codice all'archivio del codice sorgente.
Test della pipeline
-
Effettua una modifica del codice nell'archivio del codice sorgente configurato, conferma e inserisci la modifica.
Apri la console all'indirizzo. CodePipeline https://console.aws.amazon.com/codepipeline/
-
Seleziona la pipeline nell'elenco.
-
Osserva l'avanzamento della pipeline attraverso le varie fasi. La pipeline dovrebbe essere completata e l'azione invierà l'immagine Docker all'ECR creato in seguito alla modifica del codice.