Tutorial: Erstellen Sie ein Docker-Image und übertragen Sie es auf Amazon ECR mit CodePipeline (Typ V2) - AWS CodePipeline

View a markdown version of this page

Tutorial: Erstellen Sie ein Docker-Image und übertragen Sie es auf Amazon ECR mit CodePipeline (Typ V2) - AWS CodePipeline

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Tutorial: Erstellen Sie ein Docker-Image und übertragen Sie es auf Amazon ECR mit CodePipeline (Typ V2)

Dieses Tutorial hilft Ihnen dabei, eine Build-Aktion zu erstellen CodePipeline , die Ihr Docker-Image nach einer Änderung Ihres Quellcodes ausführt und an Amazon ECR überträgt. In diesem Tutorial erfahren Sie auch, wie Sie eine Amazon ECS-Bereitstellungsaktion hinzufügen, mit der Ihr gepushtes Image bereitgestellt wird.

Wichtig

Im Rahmen der Erstellung einer Pipeline in der Konsole wird ein S3-Artefakt-Bucket von CodePipeline for Artifacts verwendet. (Dies unterscheidet sich von dem Bucket, der für eine S3-Quellaktion verwendet wird.) Wenn sich der S3-Artefakt-Bucket in einem anderen Konto als dem Konto für Ihre Pipeline befindet, stellen Sie sicher, dass der S3-Artefakt-Bucket dem Konto gehört AWS-Konten , das sicher und zuverlässig ist.

Anmerkung

Dieses Tutorial behandelt die ECRBuildAndPublish Build-Aktion für eine CodePipeline Pipeline mit einem GitHub Quell-Repository und einer Amazon ECS-Standardaktion für die Bereitstellung in einem Amazon ECS-Cluster. Ein Tutorial, das eine Pipeline mit einem ECR-Image-Repository als Quelle für eine Amazon ECS-Aktion zur CodeDeploy blue/green Bereitstellung verwendet CodePipeline, finden Sie unterTutorial: Erstellen Sie eine Pipeline mit einer Amazon ECR-Quelle und Bereitstellung ECS-to-CodeDeploy.

Wichtig

Diese Aktion verwendet CodePipeline Managed CodeBuild Compute, um Befehle in einer Build-Umgebung auszuführen. Für die Ausführung der Befehlsaktion fallen separate Gebühren in an AWS CodeBuild.

Voraussetzungen

Es müssen bestimmte Ressourcen zur Verfügung stehen, damit Sie mithilfe dieses Tutorials eine CD-Pipeline erstellen können. Zum Einstieg benötigen Sie Folgendes:

Anmerkung

Alle diese Ressourcen sollten in derselben AWS Region erstellt werden.

  • Ein Quellcodeverwaltungs-Repository (dieses Tutorial verwendet GitHub), dem Sie für dieses Tutorial Folgendes hinzufügen werden:

    • In Schritt 1 fügen Sie Ihrem Quell-Repository ein Beispiel-Dockerfile als Eingabeartefakt für die ECRBuildAndPublish Build-Aktion hinzu. CodePipeline

    • In Schritt 2 fügen Sie Ihrem Quell-Repository eine Beispieldatei imagedefinitions.json als Voraussetzung für die Amazon ECS-Standardbereitstellungsaktion in hinzu. CodePipeline

  • Ein Amazon ECR-Image-Repository, das ein Image enthält, das Sie aus Ihrem Dockerfile erstellt haben. Weitere Informationen finden Sie unter Erstellen eines Repositorys und Übertragen eines Images im Amazon Elastic Container Registry Benutzerhandbuch.

  • Ein Amazon ECS-Cluster und -Service, die in derselben Region wie das Image-Repository erstellt wurden. Weitere Informationen finden Sie unter Creating a Cluster und Creating a Service im Amazon Elastic Container Service Developer Guide.

Nachdem Sie diese Voraussetzungen erfüllt haben, können Sie mit dem Tutorial fortfahren und Ihre CD-Pipeline erstellen.

Schritt 1: Fügen Sie Ihrem Quell-Repository ein Dockerfile hinzu

In diesem Tutorial wird die ECRBuildAndPublish Aktion verwendet, um Ihr Docker-Image zu erstellen und das Image an Amazon ECR zu übertragen. Die verwaltete Rechenaktion wird CodePipeline verwendet CodeBuild , um die Befehle für die ECR-Anmeldung und den Image-Push auszuführen. Sie müssen Ihrem Quellcode-Repository keine buildspec.yml Datei hinzufügen, um zu erfahren, CodeBuild wie das geht. Für dieses Beispiel stellen Sie das Dockerfile in Ihrem Repository nur wie folgt bereit.

Fügen Sie diesen Beispieltext ein, um Ihre Dockerfile Datei zu erstellen. Dieses Dockerfile-Beispiel entspricht dem Beispiel, das in den ECR-Image-Anweisungen in den Voraussetzungen verwendet wird.

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
Um eine hinzuzufügen Dockerfile Datei zu deinem Quell-Repository
  1. Öffnen Sie einen Texteditor und kopieren Sie dann die obige Docker-Datei und fügen Sie sie in eine neue Datei ein.

  2. Führen Sie einen Commit und eine Push-Übertragung Ihrer Dockerfile-Datei zu Ihrem Quell-Repository durch.

    1. Fügen Sie die Datei hinzu.

      git add .
    2. Führen Sie einen Commit der Änderung durch.

      git commit -m "Adding Dockerfile."
    3. Führen Sie eine Push-Übertragung für das Commit durch.

      git push

    Stellen Sie sicher, dass Sie die Datei auf der Stammebene Ihres Repositorys platzieren.

    / Dockerfile

Schritt 2: Füge eine imagedefinitions.json-Datei zu deinem Quell-Repository hinzu

In diesem Tutorial wird die Amazon ECS-Standardbereitstellungsaktion verwendet CodePipeline , um Ihren Container in Ihrem Amazon ECS-Cluster bereitzustellen. Für die Amazon ECS-Standardbereitstellungsaktion ist eine imagedefinitions.json-Datei erforderlich, die Ihren Image-Namen und URI enthält. Weitere Informationen zur imagedefinitions.json-Datei finden Sie unter. imagedefinitions.json-Datei für Amazon ECS-Standardbereitstellungsaktionen

Fügen Sie diesen Beispieltext ein, um Ihre Datei zu erstellen. imagedefinitions.json Verwenden Sie den Namen in Ihrem Dockerfile, z. B.hello-world, und verwenden Sie die URI aus Ihrem Amazon ECR-Repository, in dem das Bild gespeichert ist.

[ { "name": "hello-world", "imageUri": "ACCOUNT-ID.dkr.ecr.us-east-1.amazonaws.com/actions/image-repo" } ]
Um eine hinzuzufügen imagedefinitions.json Datei in dein Quell-Repository
  1. Öffnen Sie einen Texteditor und kopieren Sie dann das obige Beispiel und fügen Sie es in eine neue Datei ein.

  2. Führen Sie einen Commit und eine Push-Übertragung Ihrer imagedefinitions.json-Datei zu Ihrem Quell-Repository durch.

    1. Fügen Sie die Datei hinzu.

      git add .
    2. Führen Sie einen Commit der Änderung durch.

      git commit -m "Adding imagedefinitions.json."
    3. Führen Sie eine Push-Übertragung für das Commit durch.

      git push

    Stellen Sie sicher, dass Sie die Datei auf der Stammebene Ihres Repositorys platzieren.

    / imagedefinitions.json

Schritt 3: Deine Pipeline erstellen

Verwenden Sie den CodePipeline Assistenten, um Ihre Pipeline-Stufen zu erstellen und Ihr Quell-Repository zu verbinden.

So erstellen Sie Ihre Pipeline
  1. Öffnen Sie die CodePipeline Konsole unter https://console.aws.amazon.com/codepipeline/.

  2. Wählen sie auf der Seite Welcome (Willkommen) die Option Getting started (Erste Schritte) aus, oder auf der Seite Pipelines die Option Create pipeline (Pipeline erstellen).

  3. Wählen Sie auf der Seite Schritt 1: Erstellungsoption auswählen unter Erstellungsoptionen die Option Benutzerdefinierte Pipeline erstellen aus. Wählen Sie Weiter aus.

  4. Geben Sie auf Schritt 2: Wählen Sie die Pipeline-Einstellungen aus und geben Sie im Feld Pipeline-Name den Wert einMyPipeline.

  5. CodePipeline bietet Pipelines vom Typ V1 und V2, die sich in ihren Eigenschaften und ihrem Preis unterscheiden. Der Typ V2 ist der einzige Typ, den Sie in der Konsole auswählen können. Weitere Informationen finden Sie unter Pipeline-Typen. Informationen zur Preisgestaltung für finden Sie CodePipeline unter Preisgestaltung.

  6. Wählen Sie unter Servicerolle die Option Neue Servicerolle aus, um CodePipeline die Erstellung einer Servicerolle in IAM zu ermöglichen.

  7. Belassen Sie die Einstellungen unter Erweiterte Einstellungen bei den Standardeinstellungen, und wählen Sie dann Next (Weiter) aus.

  8. Fügen Sie auf der Seite Schritt 3: Quellstufe hinzufügen eine Quellstufe hinzu:

    1. Wählen Sie unter Quellanbieter die Option GitHub (über GitHub App) aus.

    2. Wählen Sie unter Verbindung eine bestehende Verbindung aus oder erstellen Sie eine neue. Informationen zum Erstellen oder Verwalten einer Verbindung für Ihre GitHub Quellaktion finden Sie unterGitHub Verbindungen.

    3. Wählen Sie im Feld Repository name (Repositoryname) den Namen Ihres GitHub -Repositorys aus.

    4. Wählen Sie unter Standard-Branch den Branch aus, den Sie angeben möchten, wenn die Pipeline manuell oder mit einem Quellereignis gestartet wird, das kein Git-Tag ist. Wenn die Quelle der Änderung nicht der Auslöser ist oder wenn eine Pipeline-Ausführung manuell gestartet wurde, wird als Änderung der HEAD-Commit aus dem Standard-Branch verwendet.

    Wählen Sie Weiter aus.

  9. Wählen Sie auf der Seite Schritt 4: Build-Phase hinzufügen die Option Andere Build-Anbieter aus, und wählen Sie dann ECRBuildAndPublish.

    Fügen Sie Ihrer Pipeline eine Amazon ECR-Build-Aktion hinzu.
    1. Wählen Sie für den Namen des ECR-Repositorys Ihr Image-Repository aus.

    2. Wählen Sie Weiter aus.

  10. Wählen Sie in Schritt 5: Testphase hinzufügen die Option Testphase überspringen aus und akzeptieren Sie dann die Warnmeldung, indem Sie erneut Überspringen wählen.

    Wählen Sie Weiter aus.

  11. Wählen Sie auf der Seite Schritt 6: Bereitstellungsphase hinzufügen die Option Bereitstellungsphase überspringen aus. Im folgenden Schritt fügen Sie die ECS-Aktion hinzu.

  12. Überprüfen Sie auf der Seite Schritt 7: Überprüfen Ihre Pipeline-Konfiguration und wählen Sie Create pipeline aus, um die Pipeline zu erstellen.

  13. Bearbeiten Sie Ihre Pipeline, um die Amazon ECS-Bereitstellungsaktion zu Ihrer Pipeline hinzuzufügen:

    1. Wählen Sie rechts oben Edit (Bearbeiten) aus.

    2. Wählen Sie unten im Diagramm + Add stage (+ Stufe hinzufügen) aus. Geben Sie unter Stage name (Name der Phase), einen Namen ein, z. B. Deploy.

    3. Wählen Sie + Add action group (Aktionsgruppe hinzufügen).

    4. Geben Sie unter Action name (Aktionsname) einen Namen ein.

    5. Wählen Sie unter Action Provider die Option Amazon ECS aus. Belassen Sie unter Region als Standardeinstellung die Pipeline-Region.

    6. Wählen Sie unter Eingabeartefakte das Eingabeartefakt aus der Quellphase aus, z. B. SourceArtifact

    7. Wählen Sie als Clustername den Amazon ECS-Cluster aus, in dem Ihr Service ausgeführt wird.

    8. Wählen Sie für den Servicenamen den Service aus, der aktualisiert werden soll.

    9. Wählen Sie Speichern.

    10. Wählen Sie in der Phase, die Sie bearbeiten, Fertig. Wählen Sie im AWS CodePipeline -Fenster Save (Speichern) und dann in der Warnmeldung Save (Speichern).

    11. Um Ihre Änderungen zu übertragen und einen Pipeline-Build zu starten, wählen Sie Release change (Änderung freigeben) und dann Release (Freigeben).

  14. Nachdem die Pipeline ausgeführt wurde, sehen Sie sich die Struktur und den Status der Pipeline an.

    Ein Konsolendiagramm, das eine erfolgreiche Pipeline-Ausführung zeigt, wobei die Amazon ECR-Build-Aktion und die Amazon ECS-Bereitstellungsaktion zu Ihrer Pipeline hinzugefügt wurden.
  15. Nachdem die Pipeline erfolgreich ausgeführt wurde, wählen Sie Details anzeigen, um die Protokolle der Aktion und die Ausgabe der verwalteten Rechenaktion anzuzeigen.

    Sehen Sie sich die Protokolle für die Amazon ECR-Build-Aktion in Ihrer Pipeline an.
  16. Beheben Sie alle fehlgeschlagenen Aktionen. Beispielsweise kann die ECS-Bereitstellungsaktion fehlschlagen, wenn sich die Datei imagedefinitions.json nicht im Quell-Repository befindet. Das Folgende ist ein Beispiel für die Fehlermeldung, die angezeigt wird, wenn die Datei imagedefinitions.json fehlt.

    Sehen Sie sich die Protokolle für die Amazon ECR-Build-Aktion in Ihrer Pipeline an.

Schritt 4: Testen Ihrer Pipeline

Ihre Pipeline sollte alles enthalten, was Sie für den Betrieb einer durchgängigen nativen AWS kontinuierlichen Bereitstellung benötigen. Testen Sie nun ihre Funktionalität, indem Sie eine Code-Änderung mithilfe von Push zu Ihrem Quell-Repository übertragen.

So testen Sie Ihre Pipeline
  1. Nehmen Sie eine Code-Änderung an Ihrem konfigurierten Quell-Repository vor und führen Sie den Commit-Vorgang und die Push-Übertragung der Änderung durch.

  2. Öffnen Sie die CodePipeline Konsole unter https://console.aws.amazon.com/codepipeline/.

  3. Wählen Sie Ihre Pipeline in der Liste aus.

  4. Sehen Sie sich an, wie die Pipeline ihre Phasen durchläuft. Ihre Pipeline sollte abgeschlossen sein und Ihre Aktion überträgt das Docker-Image auf ECR, das aufgrund Ihrer Codeänderung erstellt wurde.