Résumé de la compréhension de Docker par les débutants ⑥ ~ Jusqu'au déploiement automatique du conteneur Docker sur l'instance EC2 à l'aide de CodeDeploy et CodePipeline ~

introduction

Maintenant que j'ai enfin commencé à apprendre Docker, je vais résumer ma compréhension.

Ce que j'ai fait

Et cette fois aussi, docker n'a rien à voir avec ça. ..

supposition

Au moment de deux fois avant, l'instance EC2 a été démarrée et docker et docker-compose ont été installés. スクリーンショット 2020-10-26 14.05.06.png

procédure

Installez Code Deploy Agent sur l'instance EC2

Ici et Ici .com / ja_jp / codedeploy / latest / userguide / resource-kit.html # resource-kit-bucket-names)

#Tout d'abord, connectez-vous à EC2
ssh -i "ec2-key.pem" [email protected]

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

#Voici un bucket pour chaque environnement-nom et région-Modifier l'identifiant
wget https://bucket-name.s3.region-identifier.amazonaws.com/latest/install

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

En passant, si ce qui précède est décrit dans les données utilisateur du paramètre de démarrage de l'instance, il sera automatiquement exécuté lors de la création de l'instance, comme AutoScalling. Cela n'a pas d'importance cette fois.

ʻCréez un rôle IAM avec la stratégie AWSCodeDeployRole` attachée et attachez-le à l'instance EC2

Sélectionnez d'abord Créer un rôle à partir de la console IAM

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

Sélectionnez EC2 comme entité

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

Stratégie ʻAttach AWS CodeDeployRole`

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

Créez un rôle avec une balise et un nom de rôle appropriés

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

Attachez le rôle créé à l'instance EC2

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

Paramètres de CodeDeploy

Tout d'abord, la console CodeDeploy

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

Paramètres de l'application

Sélectionnez EC2 comme plate-forme スクリーンショット 2020-10-26 15.13.19.png

Créer un rôle pour CodeDeploy

Même procédure que la création d'un rôle pour EC2 plus tôt. スクリーンショット 2020-10-26 15.17.19.png スクリーンショット 2020-10-26 15.18.27.png スクリーンショット 2020-10-26 15.21.05.png

Créer un groupe de déploiement dans l'application créée

Le nom du groupe de déploiement est approprié. Pour le rôle de service, attachez le rôle pour CodeDeploy créé précédemment. スクリーンショット 2020-10-26 15.23.08.png

Sélectionnez sur place comme type de déploiement. Définissez le paramètre d'environnement sur l'instance EC ". Ici, les balises sont utilisées pour déterminer sur quel EC2 déployer. Déployé sur tous les EC2 avec la balise sélectionnée. Pratique pour un déploiement sur plusieurs EC2 en même temps.

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

Spécifiez les paramètres de déploiement par défaut. Cette fois, nous n'utilisons pas l'équilibreur de charge.

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

Création de ʻappspec.yml et ʻApplicationStart.bash

Je déploie le code en conjonction avec le référentiel git, mais en plus du code source, je dois enregistrer un fichier qui décrit comment le déployer dans le répertoire racine du référentiel git. Et le nom du fichier est fixé comme ʻappspec.yml`. Pour une rédaction spécifique, voir ici et [ici] J'ai fait référence à l'article (https://dev.classmethod.jp/articles/code-deploy-appspec/). Merci beaucoup.

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

De plus, après avoir copié et installé le code sur EC2 selon ʻappspec.yml, vous devez réellement faire docker-compose up. Décrivez-le dans ʻApplicationStart.bash. Veuillez faire attention à la partie -d de docker-compose up -d. Si vous ne l'exécutez pas en arrière-plan, le déploiement ne se terminera jamais.

./scripts/ApplicationStart.bash


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

Créer un déploiement

Sélectionnez une application et cliquez sur "Créer un déploiement". スクリーンショット 2020-10-26 15.35.34.png Sélectionnez github pour "Type de révision" et entrez le nom de votre compte comme nom de jeton. Et connectez-vous. Spécifiez également le nom du référentiel de la destination de connexion et l'ID de validation à tout moment que vous souhaitez déployer. スクリーンショット 2020-10-26 15.37.32.png

Si vous créez un déploiement avec cela, vous devriez pouvoir déployer sans problèmes. Je suis ici. スクリーンショット 2020-10-26 17.12.02.png

Paramètres de Code Pipeline

Créer un pipeline

Créez un nouveau pipeline à partir de la console CodePipeline. Si vous définissez correctement le nom du pipeline, le nom du rôle de service sera également défini automatiquement. スクリーンショット 2020-10-26 17.16.52.png

Sélectionnez github (ver.1) comme étape source et connectez-vous à votre compte. スクリーンショット 2020-10-26 17.18.54.png

Sélectionnez un référentiel et une branche. スクリーンショット 2020-10-26 17.21.23.png

Ignorez l'étape de construction (car il s'agit d'un langage sans compilation) スクリーンショット 2020-10-26 17.23.29.png

Le fournisseur de déploiement sélectionne «CodeDeploy» et sélectionne l'application et le groupe de déploiement que vous venez de créer. スクリーンショット 2020-10-26 17.26.51.png

Ajoutez l'accès à S3 à EC2.

Pour qu'EC2 utilise Code Pipeline, l'accès à S3 est requis. Par conséquent, ajoutez la stratégie ʻAmazon S3FullAccess` au rôle qui était attaché à EC2 précédemment. スクリーンショット 2020-10-26 17.30.21.png

Les réglages sont maintenant terminés. Pousser le code vers git le déploiera automatiquement sur EC2. スクリーンショット 2020-10-26 17.09.52.png

Site de référence

YouTube de Kurokawa. J'y fais toujours référence. https://youtu.be/8mPm7jolnVk

Recommended Posts

Résumé de la compréhension de Docker par les débutants ⑥ ~ Jusqu'au déploiement automatique du conteneur Docker sur l'instance EC2 à l'aide de CodeDeploy et CodePipeline ~
Résumé de la compréhension de Docker par les débutants ⑤ ~ Jusqu'au déploiement d'un conteneur Docker sur une instance EC2 ~
Résumé de la compréhension de Docker par les débutants ④ ~ Jusqu'à ce que l'instance EC2 soit démarrée et que Docker soit installé ~
Résumé de la compréhension de Docker par les débutants ③ ~ Jusqu'à l'API de proxy à l'aide de nginx ~
Résumé de la compréhension de Docker par les débutants ② ~ docker-compose ~
Résumé de la compréhension de Docker par les débutants ① ~ docker run -p ~
[Résumé des livres techniques] Résumé de la lecture "Introduction au développement pratique de conteneurs de Docker / Kubernetes"