Déployer avec EC2 / Docker / Laravel

Contexte

Je commence à étudier le développement d'applications Web à l'aide de Laradoc.

AWS et Laravel, docker, docker-compose Environ un mois après avoir commencé mes études J'ai l'habitude d'utiliser Docker / Doker Compose / AWS, donc j'aimerais le déployer avec Laradoc, je vais donc le laisser pour ma propre étude. (Au 4 novembre 2020)

Les sites auxquels j'ai fait référence sont les suivants.

https://laraweb.net/tutorial/6578/ https://noumenon-th.net/programming/2019/06/16/laradock/

Le livre de référence est «Construction de réseau et de serveur à partir de la 3e édition révisée d'Amazon Web Services».

J'ai étudié les connaissances de base de docker et docker-compose dans le cours udemy suivant.

https://www.udemy.com/course/aidocker/

Je remercie les auteurs ci-dessus de m'avoir apporté diverses connaissances.

Faisons-le maintenant

objectif

Déployez une application Web Laravel accessible de n'importe où sur AWS. A l'origine, je pense que Laradoc est créé localement, une application Web est développée et elle est clonée git. Tout est fait sur AWS.

environnement d'exécution laravel

Ubuntu:18.04 PHP : 7.3 mysql : 5.4 Docker : 19.03.13 Docker-compose : 1.17.1

Sélection de la région

Créons dans la région de Tokyo

Créer un VPC

image.png

image.png

Créez un VPC avec un sous-réseau public. Si vous souhaitez créer un sous-réseau privé, créez un VPC avec les sous-réseaux publics et privés ci-dessous. À ce stade, le bloc d'adresse CIDR IPv4 est 10.0.0.0/16 Définissons-le sur Ipv4 10.0.0.0/24 du sous-réseau public. image.png

VPC image.png

Créer une instance EC2

Sélectionnez EC2 dans la console et cliquez sur Lancer l'instance image.png

Sélectionnez Ubuntu 18.04 Sélectionnez t2.micro à l'étape 2 image.png

Étape 3 Sélectionnez le VPC créé précédemment dans les paramètres détaillés de l'instance. Activer également l'adresse IP publique attribuée automatiquement de désactivé. image.png

Étape 6 Le port HTTP 80 étant utilisé dans le paramètre du groupe de sécurité, ajoutez-le en ajoutant une règle. image.png

Cliquez sur Démarrer à l'étape 7. Téléchargez la paire de clés (mykey.pem) pour la connexion SSH.

image.png

Pendant ce temps, authentifions mykey.pem.

Accédez au dossier de téléchargement et exécutez la commande suivante Ensuite, l'authentification changera.

chmod 400 mykey.pem


 Les détails peuvent être trouvés sur la page de certification aws.
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-key-pairs.html

 Après un certain temps, l'instance sera en cours d'exécution, cliquez donc sur le tableau de bord EC2 ⇒ instance en cours d'exécution ⇒ cliquez sur l'ID d'instance créée
 Cliquez sur la connexion en haut à droite
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129576/7ee3781a-a5f4-5ff4-9569-335b7732ceee.png)

 Si vous souhaitez établir une connexion SSH, vous pouvez le faire en bas (cliquez sur la commande copiée).

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129576/a55ba871-2aef-0b68-f858-2baf4e43cde4.png)

 Ouvrez le terminal
 Accédez au répertoire contenant mykey.pem (cd)

 Je viens de le copier sur AWS
```ssh ~~~```
 Collez dans le terminal. Entrer

 Ensuite, placez-le dans l'EC2 créé précédemment.
 ensuite,
```yes```Entrer
 C'est la fin du démarrage d'EC2.

# Installez Docker, Git, Docker-compose dans EC2
~~~
ubuntu@ip-10-0-0-205:~$ sudo su
root@ip-10-0-0-205:/home/ubuntu# 
~~~

 Travaillez en racine ci-dessous


 Tapons la commande ci-dessous
 Mettez à jour apt-get et installez git
```apt-get update```
```apt-get install git```

 Installer docker et docker-compose

~~~
$ apt-get install \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-common

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

$ apt-key fingerprint 0EBFCD88

$ add-apt-repository \
                      "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
                      $(lsb_release -cs) \
                      stable"
$ apt-get install docker-ce docker-ce-cli containerd.io

$ apt install docker-compose
~~~

exit

 Sortez de la racine avec

# Git clone Laradoc.
https://laradock.io/

~~~
git clone https://github.com/Laradock/laradock.git
~~~
 Assurez-vous qu'il est cloné avec git avec ls.
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129576/9278a506-1ba4-d41c-d552-5c5b2fa8a4bb.png)

```$ cd laradock```Comme

#### **`$ cp env-example .env`**
```env

 Pour le moment, PHP = 7,3
 Lançons-le avec mysql.
 Courir.

docker-compose up -d nginx mysql

 Ensuite, démarrez le docker de nginx mysql.
 Attendez environ 10 minutes. Détendons-nous en regardant sur Youtube.

# Entrez dans le conteneur de l'espace de travail.
 Après avoir installé docker, exécutez la commande suivante et
 Travaillons dans l'espace de travail.

docker-compose exec --user=laradock workspace bash


 Dans l'espace de travail, démarrez docker-compose.

 Cela vous mènera à `` `` var / www $ '' ``.
 Parce qu'il y a un dossier laradock

```$ cd laradoock```
 Modifiez le fichier .env en tant que.

#### **`$ cp env-example .env`**
```env

 Faisons le

 Ajoutez ce qui suit à `` .env```

#### **`vi .Exécutez env et ajoutez ce qui suit.`**
```Exécutez env et ajoutez ce qui suit.


DB_HOST=mysql DB_DATABASE=default DB_USERNAME=default DB_PASSWORD=secret


## Créer une application Web avec Laravel

 Cette fois, l'exemple de nom d'application est SampleProject.

laradock@e00afef1d36e:/var/www$ composer create-project laravel/laravel SampleProject "5.5.*"


 Ensuite, vous pouvez créer un exemple de projet.

var/www --- laradock |_ SampleProject

 Il sera configuré comme.

 Entrez SampleProject et modifiez .env.

DB_CONNECTION=mysql DB_HOST=mysql DB_PORT=3306 DB_DATABASE=default DB_USERNAME=default DB_PASSWORD=secret

 Définissez DB_HOST sur mysql.

 Ensuite, modifiez .env dans Laradock comme suit et sélectionnez l'application laravel pour démarrer.
 Si vous n'écrivez pas ici, il ne sera pas reconnu.

APP_CODE_PATH_HOST=../SampleProject


 Pour le moment, les réglages sont terminés.

 Accédez au dossier laradoc et redémarrez docker-compose pour charger vos modifications.


docker-compose up -d nginx mysql phpmyadmin


 Ce sera le dernier dans peu de temps.
## Affichage de l'écran initial Laravel

 Copiez le DNS public Ipv4 EC2 et
 Collez-le dans la barre d'URL de votre navigateur. (L'URL peut être corrigée avec Elastic IP, mais cette fois, ce ne sera pas fait.)


 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129576/afad51fc-f102-9652-77f7-9f691c7a38d5.png)

 Tu peux y aller. Je suis sceptique, vous pouvez donc vérifier si cela fonctionne sur votre iPhone pour voir s'il est global au lieu de local.

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129576/b2d4e000-6e69-ae1e-150a-6f408b03dc61.png)


# Précautions lors du redémarrage de l'EC2
 1) Redémarrez docker-compose chaque fois que vous redémarrez EC2.
 Il semble qu'il redémarrera lorsque EC2 sera arrêté, donc
 Puisque vous devez démarrer docker-compose chaque fois que vous démarrez EC2
 Exécutez la commande suivante.

sudo su cd laradock/ docker-compose up -d nginx mysql phpmyadmin


 2) Lorsque EC2 est arrêté, l'adresse Ip a changé, donc
 Corrigeons le problème avec Elastic IP.

 3) Après avoir changé le fichier Laradock
```docker-compose up -d mysql phpmyadmin```
 Faisons le.
 Bien entendu, le fichier à modifier est Sample Project.


# Impressions et avenir
 Je pensais que ce serait très pratique de lancer avec EC2, et je serais heureux si je pouvais le déployer.
 Cependant, le démarrage de Docker-compose après le redémarrage d'EC2,
 Quand j'ai lancé EC2, je pensais que c'était un problème de mettre git ou Docker / Docker-compose.

 À partir de maintenant, j'étudierai la redondance EC2, ECS (Fargate) et CI / CD en tant que contenus avancés.

 J'espère que cela vous sera utile.

 c'est tout


Recommended Posts

Déployer avec EC2 / Docker / Laravel
Déployez l'application avec VPC + EC2 + Docker.
Déployer laravel à l'aide de docker sur EC2 sur AWS ① (Créer une instance EC2)
Créez un environnement Docker + Laravel avec Laradock
Déployez laravel à l'aide de docker sur EC2 sur AWS ② (Elastic IP acquisition-binding)
Déployer laravel à l'aide de docker sur EC2 sur AWS ④ (git clone-deploy, migration)
Déployer laravel à l'aide de docker sur EC2 sur AWS ③ (connexion SSH ~ installation Docke-compose)
Construction de l'environnement de développement Laravel avec Docker (Mac)
Déployer sur heroku avec Docker (Rails 6, MySQL)
Construire un environnement pour Laravel + MySQL + phpMyadmin avec Docker
Afficher les spécifications de l'API avec Laravel + SwaggerUI + Docker
heroku: docker: déployer
Créer un environnement Laravel / Docker avec VSCode devcontainer
Déployer le bot Line avec rails5 + Docker + Heroku Note
Lancez MariaDB avec Docker
Exploser Docker avec WSL2
Utiliser Puphpeteer avec Docker
Exploitez Emby avec Docker
Déployer RAILS sur EC2
Exécutez Payara avec Docker
PHP jetable avec Docker
[Note] Créez un environnement Python3 avec Docker dans EC2
Utiliser GDAL avec Python avec Docker
Exécutez TAO Core avec Docker
Gestion Docker avec VS Code
Configurer GitLab avec docker
Déploiement à chaud avec IntelliJ IDEA
Exécuter des rails à chaque fois dans le docker
Paramètre de démarrage automatique de Docker avec wsl2
[Docker] Construction de l'environnement Rails 5.2 avec docker
Spring Boot à partir de Docker
Créer un environnement Docker avec WSL
Gérer la version de CocoaPods avec Docker
Éviter l'autorisation refusée lors du développement de Laravel avec Docker
Installer docker sur AWS EC2
Application Web construite avec docker (1)
J'ai essayé BIND avec Docker
Java: démarrez WAS avec Docker et déployez votre propre application
Construire DynamoDB local avec Docker
[Docker] À utiliser à tout moment avec Docker + Rails
Utilisation de PlantUml avec Honkit [Docker]