Bereitstellung mit EC2 / Docker / Laravel

Hintergrund

Ich fange an, die Entwicklung von Web-Apps mit Laradoc zu studieren.

AWS und Laravel, Docker, Docker-Compose Ungefähr einen Monat nach Beginn meines Studiums Ich bin es gewohnt, Docker / Doker Compose / AWS zu verwenden, daher möchte ich es mit Laradoc bereitstellen, damit ich es für mein eigenes Studium belassen kann. (Stand 4. November 2020)

Die Sites, auf die ich mich bezog, sind wie folgt.

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

Das Nachschlagewerk lautet "Netzwerk- und Serverkonstruktion von Amazon Web Services Basics Revised 3rd Edition".

Im folgenden udemy-Kurs habe ich die Grundkenntnisse von Docker und Docker-Compose studiert.

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

Ich bin den oben genannten Autoren dankbar, dass sie mir verschiedene Kenntnisse vermittelt haben.

Lass es uns jetzt machen

Tor

Stellen Sie eine Laravel-Webanwendung bereit, auf die von überall in AWS aus zugegriffen werden kann. Ursprünglich denke ich, dass Laradoc lokal erstellt, eine Webanwendung entwickelt und git geklont wird. Es ist alles auf AWS erledigt.

Laravel-Ausführungsumgebung

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

Regionsauswahl

Lassen Sie uns in der Region Tokio erstellen

Erstellen einer VPC

image.png

image.png

Erstellen Sie eine VPC mit einem öffentlichen Subnetz. Wenn Sie ein privates Subnetz erstellen möchten, erstellen Sie eine VPC mit den folgenden öffentlichen und privaten Subnetzen. Zu diesem Zeitpunkt ist der IPv4-CIDR-Block 10.0.0.0/16 Stellen wir es auf Ipv4 10.0.0.0/24 des öffentlichen Subnetzes ein. image.png

VPC image.png

Erstellen einer EC2-Instanz

Wählen Sie EC2 in der Konsole aus und klicken Sie auf Instanz starten image.png

Wählen Sie Ubuntu 18.04 Wählen Sie in Schritt 2 t2.micro aus image.png

Schritt 3 Wählen Sie die zuvor in den Detaileinstellungen der Instanz erstellte VPC aus. Aktivieren Sie auch die automatisch zugewiesene öffentliche IP von deaktiviert. image.png

Schritt 6 Da der HTTP 80-Port in der Sicherheitsgruppeneinstellung verwendet wird, fügen Sie ihn durch Hinzufügen einer Regel hinzu. image.png

Klicken Sie in Schritt 7 auf Start. Laden Sie das Schlüsselpaar (mykey.pem) für die SSH-Verbindung herunter.

image.png

Lassen Sie uns in dieser Zeit mykey.pem authentifizieren.

Wechseln Sie in den Download-Ordner und führen Sie den folgenden Befehl aus Dann ändert sich die Authentifizierung.

chmod 400 mykey.pem


 Details finden Sie auf der aws-Zertifizierungsseite.
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-key-pairs.html

 Nach einer Weile wird die Instanz ausgeführt. Klicken Sie also auf das EC2-Dashboard. ⇒ Instanz ausführen. ⇒ Klicken Sie auf die erstellte Instanz-ID
 Klicken Sie oben rechts auf die Verbindung
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129576/7ee3781a-a5f4-5ff4-9569-335b7732ceee.png)

 Wenn Sie eine SSH-Verbindung herstellen möchten, können Sie dies unten tun (klicken Sie auf den kopierten Befehl).

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

 Öffnen Sie das Terminal
 Wechseln Sie in das Verzeichnis mit mykey.pem (cd)

 Ich habe es gerade auf AWS kopiert
```ssh ~~~```
 In das Terminal einfügen. Eingeben

 Dann legen Sie es in die zuvor erstellte EC2.
 danach,
```yes```Eingeben
 Dies ist das Ende des EC2-Starts.

# Installieren Sie Docker, Git, Docker-Compose in EC2
~~~
ubuntu@ip-10-0-0-205:~$ sudo su
root@ip-10-0-0-205:/home/ubuntu# 
~~~

 Arbeite in der Wurzel unten


 Geben Sie den folgenden Befehl ein
 Aktualisieren Sie apt-get und installieren Sie git
```apt-get update```
```apt-get install git```

 Installieren Sie Docker und 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

 Raus aus der Wurzel mit

# Git-Klon Laradoc.
https://laradock.io/

~~~
git clone https://github.com/Laradock/laradock.git
~~~
 Stellen Sie sicher, dass es mit ls geklont ist.
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129576/9278a506-1ba4-d41c-d552-5c5b2fa8a4bb.png)

```$ cd laradock```Wie

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

 Derzeit ist PHP = 7,3
 Lassen Sie es uns mit MySQL ausführen.
 Lauf.

docker-compose up -d nginx mysql

 Dann starten Sie den Docker von Nginx MySQL.
 Warten Sie ca. 10 Minuten. Lassen Sie uns entspannen, während Sie auf Youtube schauen.

# Geben Sie den Arbeitsbereichscontainer ein.
 Führen Sie nach der Installation von Docker den folgenden Befehl aus und
 Lassen Sie uns im Arbeitsbereich arbeiten.

docker-compose exec --user=laradock workspace bash


 Starten Sie im Arbeitsbereich Docker-Compose.

 Dies bringt Sie zu `` `var / www $` ``.
 Weil es einen Laradock-Ordner gibt

```$ cd laradoock```
 Bearbeiten Sie die .env-Datei als.

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

 Machen wir das

 Fügen Sie Folgendes zu `` `.env``` hinzu

#### **`vi .Führen Sie env aus und fügen Sie Folgendes hinzu.`**
```Führen Sie env aus und fügen Sie Folgendes hinzu.


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


## Erstellen einer Web-App mit Laravel

 Diesmal lautet der Name der Beispiel-App SampleProject.

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


 Anschließend können Sie ein Beispielprojekt erstellen.

var/www --- laradock |_ SampleProject

 Es wird konfiguriert als.

 Geben Sie SampleProject ein und bearbeiten Sie .env.

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

 Setzen Sie DB_HOST auf mysql.

 Bearbeiten Sie dann .env in Laradock wie folgt und wählen Sie die zu startende Laravel-App aus.
 Wenn Sie hier nicht schreiben, wird es nicht erkannt.

APP_CODE_PATH_HOST=../SampleProject


 Die Einstellungen sind vorerst abgeschlossen.

 Gehen Sie zum Laradoc-Ordner und starten Sie Docker-Compose neu, um Ihre Änderungen zu laden.


docker-compose up -d nginx mysql phpmyadmin


 Es wird das letzte Mal sein.
## Laravel Startbildschirm

 Kopieren Sie das öffentliche EC2-IPv4-DNS und
 Fügen Sie es in die URL-Leiste Ihres Browsers ein. (Die URL kann mit Elastic IP festgelegt werden, diesmal jedoch nicht.)


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

 Du kannst gehen. Ich bin skeptisch, also können Sie überprüfen, ob es auf Ihrem iPhone funktioniert, um festzustellen, ob es global statt lokal ist.

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


# Vorsichtsmaßnahmen beim Neustart von EC2
 1) Starten Sie Docker-Compose jedes Mal neu, wenn Sie EC2 neu starten.
 Es scheint, dass es neu gestartet wird, wenn EC2 gestoppt wird
 Da Sie Docker-Compose jedes Mal starten müssen, wenn Sie EC2 starten,
 Führen Sie den folgenden Befehl aus.

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


 2) Wenn EC2 gestoppt ist, hat sich die IP-Adresse geändert
 Lassen Sie es uns mit Elastic IP beheben.

 3) Nach dem Ändern der Laradock-Datei
```docker-compose up -d mysql phpmyadmin```
 Machen wir das.
 Die zu bearbeitende Datei ist natürlich Beispielprojekt.


# Eindrücke und die Zukunft
 Ich dachte, es wäre sehr praktisch, mit EC2 zu starten, und ich würde mich freuen, wenn ich es bereitstellen könnte.
 Wenn Sie Docker-compose jedoch nach dem Neustart von EC2 starten,
 Als ich EC2 startete, dachte ich, es sei mühsam, Git oder Docker / Docker-Compose einzubauen.

 Von nun an werde ich EC2-Redundanz, ECS (Fargate) und CI / CD als fortgeschrittene Inhalte studieren.

 Ich hoffe es wird dir hilfreich sein.

 das ist alles


Recommended Posts

Bereitstellung mit EC2 / Docker / Laravel
Stellen Sie die Anwendung mit VPC + EC2 + Docker bereit.
Bereitstellen von Laravel mit Docker auf EC2 unter AWS ① (EC2-Instanz erstellen)
Erstellen Sie mit Laradock eine Docker + Laravel-Umgebung
Stellen Sie Laravel mit Docker auf EC2 unter AWS bereit (Elastic IP Acquisition-Linking).
Stellen Sie Laravel mit Docker auf EC2 unter AWS bereit (Git Clone-Deployment, Migration).
Stellen Sie Laravel mit Docker auf EC2 unter AWS bereit (SSH-Verbindung ~ Docke-Compose-Installation)
Aufbau einer Laravel-Entwicklungsumgebung mit Docker (Mac)
Mit Docker auf Heroku bereitstellen (Rails 6, MySQL)
Erstellen einer Umgebung für Laravel + MySQL + phpMyadmin mit Docker
Zeigen Sie API-Spezifikationen mit Laravel + SwaggerUI + Docker an
Heroku: Docker: Bereitstellen
Erstellen Sie eine Laravel / Docker-Umgebung mit VSCode devcontainer
Stellen Sie Line Bot mit Rails5 + Docker + Heroku Note bereit
Starten Sie MariaDB mit Docker
Explodiere Docker mit WSL2
Verwenden Sie Puphpeteer mit Docker
Bedienen Sie Emby mit Docker
Stellen Sie RAILS auf EC2 bereit
Führen Sie Payara mit Docker aus
Einweg-PHP mit Docker
[Hinweis] Erstellen Sie eine Python3-Umgebung mit Docker in EC2
Verwenden Sie GDAL mit Python mit Docker
Führen Sie TAO Core mit Docker aus
Docker-Management mit VS-Code
Richten Sie GitLab mit Docker ein
Hot Deploy mit IntelliJ IDEA
Führen Sie Rails immer im Docker aus
Docker Autostart-Einstellung mit wsl2
[Docker] Rails 5.2-Umgebungskonstruktion mit Docker
Spring Boot beginnend mit Docker
Erstellen einer Docker-Umgebung mit WSL
Verwalten Sie die CocoaPods-Version mit Docker
Vermeiden Sie die Verweigerung von Berechtigungen, wenn Sie Laravel mit Docker entwickeln
Installieren Sie Docker auf AWS EC2
Mit Docker erstellte Webanwendung (1)
Ich habe BIND mit Docker ausprobiert
Java: Starten Sie WAS mit Docker und stellen Sie Ihre eigene Anwendung bereit
Erstellen Sie DynamoDB local mit Docker
[Docker] Wird immer mit Docker + Rails verwendet
Verwenden von PlantUml mit Honkit [Docker]