Zusammenfassung des Docker-Verständnisses für Anfänger Until ~ Bis zur automatischen Bereitstellung des Docker-Containers für die EC2-Instanz mit CodeDeploy und CodePipeline ~

Einführung

Nachdem ich endlich angefangen habe, Docker zu lernen, fasse ich mein Verständnis zusammen.

Was ich getan habe

Und auch diesmal hat Docker nichts damit zu tun. ..

Annahme

Zum Zeitpunkt von zweimal zuvor wurde die EC2-Instanz gestartet und "Docker" und "Docker-Compose" installiert. スクリーンショット 2020-10-26 14.05.06.png

Verfahren

Installieren Sie "Code Deploy Agent" auf der EC2-Instanz

Hier und Hier .com / ja_jp / codedeploy / latest / userguide / resource-kit.html # Ressourcen-Kit-Bucket-Namen)

#Melden Sie sich zunächst bei EC2 an
ssh -i "ec2-key.pem" [email protected]

#Installation
sudo yum update
sudo yum install ruby
sudo yum install wget
cd /home/ec2-user

#Hier ist ein Eimer für jede Umgebung-Name und Region-Kennung ändern
wget https://bucket-name.s3.region-identifier.amazonaws.com/latest/install

chmod +x ./install
sudo ./install auto
sudo service codedeploy-agent status

Übrigens, wenn das Obige in den Benutzerdaten der Instanz-Starteinstellung beschrieben ist, wird es automatisch ausgeführt, wenn die Instanz erstellt wird, wie z. B. AutoScalling. Diesmal spielt es keine Rolle.

Erstellen Sie eine IAM-Rolle mit der angehängten Richtlinie "AWSCodeDeployRole" und hängen Sie sie an die EC2-Instanz an

Wählen Sie zuerst Rolle aus IAM-Konsole erstellen aus

スクリーンショット 2020-10-26 14.32.48.png

Wählen Sie EC2 als Entität aus

スクリーンショット 2020-10-26 14.33.52.png

Fügen Sie die AWSCodeDeployRole-Richtlinie hinzu

スクリーンショット 2020-10-26 14.36.52.png

Erstellen Sie eine Rolle mit einem geeigneten Tag und Rollennamen

スクリーンショット 2020-10-26 14.44.15.png

Hängen Sie die erstellte Rolle an die EC2-Instanz an

スクリーンショット 2020-10-26 15.04.28.png スクリーンショット 2020-10-26 15.08.38.png

CodeDeploy-Einstellungen

Zunächst die CodeDeploy-Konsole

スクリーンショット 2020-10-26 15.11.27.png

Anwendungseinstellungen

Wählen Sie EC2 als Plattform スクリーンショット 2020-10-26 15.13.19.png

Erstellen Sie eine Rolle für CodeDeploy

Gleiches Verfahren wie beim vorherigen Erstellen einer Rolle für EC2. スクリーンショット 2020-10-26 15.17.19.png スクリーンショット 2020-10-26 15.18.27.png スクリーンショット 2020-10-26 15.21.05.png

Erstellen Sie eine Bereitstellungsgruppe in der erstellten Anwendung

Der Name der Bereitstellungsgruppe ist angemessen. Fügen Sie für die Servicerolle die zuvor erstellte Rolle für CodeDeploy hinzu. スクリーンショット 2020-10-26 15.23.08.png

Wählen Sie In-Place als Bereitstellungstyp aus. Setzen Sie die Umgebungseinstellung auf EC "-Instanz. Hier werden Tags verwendet, um zu bestimmen, auf welchem EC2 bereitgestellt werden soll. Wird für alle EC2 mit dem ausgewählten Tag bereitgestellt. Praktisch für die gleichzeitige Bereitstellung auf mehreren EC2.

スクリーンショット 2020-10-26 15.24.48.png

Geben Sie die Standardbereitstellungseinstellungen an. Dieses Mal verwenden wir keinen Load Balancer.

スクリーンショット 2020-10-26 15.30.06.png

Erstellen von appspec.yml und ApplicationStart.bash

Ich stelle den Code in Verbindung mit dem Git-Repository bereit, aber zusätzlich zum Quellcode muss ich eine Datei speichern, in der beschrieben wird, wie er im Stammverzeichnis des Git-Repositorys bereitgestellt wird. Und der Dateiname ist fest als "appspec.yml". Spezifisches Schreiben finden Sie unter hier und [hier] Ich habe auf den Artikel verwiesen (https://dev.classmethod.jp/articles/code-deploy-appspec/). Vielen Dank.

appspec.yml


version: 0.0
os: linux
files:
  - source: /
    destination: /home/ec2-user/simple-docker-pjt
    runas: ec2-user
permissions:
  - object: /
    pattern: '**'
    owner: ec2-user
    group: ec2-user
hooks:
  ApplicationStart:
    - location: scripts/ApplicationStart.bash
      runas: ec2-user

Nachdem Sie den Code gemäß appspec.yml auf EC2 kopiert und installiert haben, müssen Sie tatsächlich docker-compose up ausführen. Beschreiben Sie es in ApplicationStart.bash. Bitte seien Sie vorsichtig mit dem -d Teil von Docker-Compose Up -d. Wenn Sie es nicht im Hintergrund ausführen, wird die Bereitstellung niemals beendet.

./scripts/ApplicationStart.bash


#!/bin/bash -e
cd /home/ec2-user/simple-docker-pjt
sudo systemctl start docker
docker-compose up -d

Erstellen Sie eine Bereitstellung

Wählen Sie eine Anwendung aus und klicken Sie auf "Bereitstellung erstellen". スクリーンショット 2020-10-26 15.35.34.png Wählen Sie github für "Revisionstyp" und geben Sie Ihren Kontonamen als Token-Namen ein. Und verbinden. Geben Sie außerdem jederzeit den Repository-Namen des Verbindungsziels und die Festschreibungs-ID an, die Sie bereitstellen möchten. スクリーンショット 2020-10-26 15.37.32.png

Wenn Sie damit eine Bereitstellung erstellen, sollten Sie diese problemlos bereitstellen können. Ich bin da. スクリーンショット 2020-10-26 17.12.02.png

Code Pipeline Einstellungen

Erstellen Sie eine Pipeline

Erstellen Sie eine neue Pipeline über die CodePipeline-Konsole. Wenn Sie den Pipeline-Namen entsprechend festlegen, wird auch der Name der Servicerolle automatisch festgelegt. スクリーンショット 2020-10-26 17.16.52.png

Wählen Sie github (Version 1) als Quellstufe und stellen Sie eine Verbindung zu Ihrem Konto her. スクリーンショット 2020-10-26 17.18.54.png

Wählen Sie ein Repository und einen Zweig aus. スクリーンショット 2020-10-26 17.21.23.png

Überspringen Sie die Build-Phase (da dies eine Build-freie Sprache ist) スクリーンショット 2020-10-26 17.23.29.png

Der Bereitstellungsanbieter wählt "CodeDeploy" aus und wählt die Anwendung und Bereitstellungsgruppe aus, die Sie gerade erstellt haben. スクリーンショット 2020-10-26 17.26.51.png

Fügen Sie EC2 den Zugriff auf S3 hinzu.

Damit EC2 die Code-Pipeline verwenden kann, ist Zugriff auf S3 erforderlich. Fügen Sie daher die Rolle "AmazonS3FullAccess" zu der Rolle hinzu, die zuvor an EC2 angehängt wurde. スクリーンショット 2020-10-26 17.30.21.png

Die Einstellungen sind jetzt abgeschlossen. Wenn Sie den Code an git senden, wird er automatisch in EC2 bereitgestellt. スクリーンショット 2020-10-26 17.09.52.png

Referenzseite

Kurokawas Youtube. Ich beziehe mich immer darauf. https://youtu.be/8mPm7jolnVk

Recommended Posts

Zusammenfassung des Docker-Verständnisses für Anfänger Until ~ Bis zur automatischen Bereitstellung des Docker-Containers für die EC2-Instanz mit CodeDeploy und CodePipeline ~
Zusammenfassung des Docker-Verständnisses für Anfänger Until ~ Bis zur Bereitstellung eines Docker-Containers auf einer EC2-Instanz ~
Zusammenfassung des Docker-Verständnisses für Anfänger ④ ~ Bis die EC2-Instanz gestartet und der Docker installiert ist ~
Zusammenfassung des Docker-Verständnisses für Anfänger ③ ~ Bis die API mit nginx ~ als Proxy erstellt wird
Zusammenfassung des Docker-Verständnisses für Anfänger do ~ Docker-Compose ~
Zusammenfassung des Docker-Verständnisses für Anfänger do ~ Docker-Run -p ~
[Zusammenfassung der technischen Bücher] Zusammenfassung der Lektüre "Einführung in die praktische Containerentwicklung von Docker / Kubernetes"