Erstellen einer Umgebung für Laravel + MySQL + phpMyadmin mit Docker

In diesem Artikel erklärt ein neuer unerfahrener Ingenieur, wie man eine Umgebung für Laravel erstellt. Es gibt einige Punkte, die nicht erreicht werden können, aber danke. Mach es ohne Git. Außerdem werden das Festlegen von Dateien wie Dockerfile und docker-compose.yml erläutert. Es ist für Leute, die die Einstellungen verstehen und eine Umgebung schaffen wollen. Auch für Laravel Anfänger! ..

Betriebsumgebung Mac(Catallina 10.15.7) Docker 19.03.13 docker-compose 1.27.4

Bitte installieren Sie Docker und Docker-Compose im Voraus. Referenzartikel Installieren von Docker und Docker-Compose (Mac Edition)

Verzeichnisaufbau

├── Docker/
│   ├── App/
│   │   ├ 000-default.conf  
│   │   ├ Dockerfile
│   │   └ php.ini 
│   └── DB/
│        ├ my.cnf  
│        └ volume/ 
│
├── src/ 
└── docker-compose.yml

Ich habe hier einen Artikel über den Befehl tree, um diese Art der Anzeige durchzuführen. Einfache Anzeige der Verzeichnisstruktur! Baumbefehl (Mac) Einführung häufig verwendeter Optionen

Beschreibung jedes Dateiverzeichnisses

000-default.conf
Apache-Konfigurationsdatei
Dockerfile
Docker-Konfigurationsdatei
php.ini
PHP-Konfigurationsdatei
my.conf
MySQL-Konfigurationsdatei
Volume-Verzeichnis
DB-Daten werden gespeichert (persistent)
src-Verzeichnis
Verzeichnis mit Laravel-Quellcode
docker-compose.yml
Docker-Compose-Konfigurationsdatei

Jede Einstellungsdatei

000-default.conf Es wird die Einstellung von Apache sein. Bitte beschreiben Sie den folgenden Inhalt.

000-default.conf


<VirtualHost *:80>
       ServerAdmin laravel@localhost
       DocumentRoot /var/www/html/laravelapp/public
       ErrorLog ${APACHE_LOG_DIR}/error.log
       CustomLog ${APACHE_LOG_DIR}/access.log combined
       <Directory /var/www/html/laravelapp/public>
           AllowOverride All
       </Directory>
</VirtualHost>

Referenzartikel Namensbasierter virtueller Host So veröffentlichen Sie Websites mit mehreren Domänen auf einem Apache-Server Hinweis: Überprüfen Sie die Apache-Konfigurationsdatei (http.conf) (1)

Dockerfile Dies ist die Einstellung des PHP-Behälters (Laravel). Bitte beschreiben Sie den folgenden Inhalt.

Dockerfile


FROM php:7.4-apache

ADD php.ini /usr/local/etc/php/
ADD 000-default.conf /etc/apache2/sites-enabled/

RUN cd /usr/bin && curl -s http://getcomposer.org/installer | php && ln -s /usr/bin/composer.phar /usr/bin/composer

RUN apt-get update \
&& apt-get install -y \
git \
zip \
unzip \
vim \
libpng-dev \
libpq-dev \
&& docker-php-ext-install pdo_mysql

RUN mv /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled
RUN /bin/sh -c a2enmod rewrite

7.4-apache


 Ich ziehe ein Bild namens php: 7.4-apache von Docker Hub.

`ADD php.ini /usr/local/etc/php/
ADD 000-default.conf /etc/apache2/sites-enabled/`
 Ich kopiere php.ini, die ich später erläutern werde, und 000-default.conf, die ich oben erläutern werde, in das angegebene Verzeichnis in dem Container, der es erstellt.

`RUN cd /usr/bin && curl -s http://getcomposer.org/installer | php && ln -s /usr/bin/composer.phar /usr/bin/composer`
 Im Container habe ich den Composer installiert, der für die Installation von Laravel erforderlich ist.


`RUN apt-get update \
&& apt-get install -y \
git \
zip \
unzip \
vim \
libpng-dev \
libpq-dev \
&& docker-php-ext-install pdo_mysql`
 Ich installiere Middleware in einem Container. Git, zip, unzip, vim, libpng-dev, libpq-dev können im Container verwendet werden.

`RUN mv /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled
RUN /bin/sh -c a2enmod rewrite`
 Im Container führe ich den Befehl mv aus, um rewrite.load in das angegebene Verzeichnis zu verschieben.
 Danach führe ich einen Befehl aus, der rewrite.load aktiviert. Weitere Informationen finden Sie im zweiten Referenzmaterial.

 Referenzmaterial
 [Verstehen Sie das Apache-Verzeichnis](https://kana-linux.info/linux/apache%E3%81%AE%E3%83%87%E3%82%A3%E3%83%AC%E3%82 % AF% E3% 83% 88% E3% 83% AA% E3% 82% 92% E7% 90% 86% E8% A7% A3% E3% 81% 97% E3% 82% 88% E3% 81% 86 )
 [Apache-Module unter Ubuntu aktivieren](https://www.t3a.jp/blog/infrastructure/apache2-mod-add/)
 [Erstellen einer Entwicklungsumgebung für Laravel + Apache + MySQL mit Docker](https://note.com/pocke_techblog/n/n8af813848fa0)


php.ini
 Es wird die Einstellung von PHP sein.
 Bitte kopieren Sie Folgendes und fügen Sie es ein.


#### **`php.ini`**
```ruby

[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
default_charset = "UTF-8"
mbstring.language = "Japanese"

date.timezone = "Asia/Tokyo" Sie stellen buchstäblich die Zeitzone ein. default_charset Geben Sie den Standardzeichencode an, der im HTTP-Header ausgegeben werden soll. mbstring.language = "Japanese" Stellen Sie die Standardsprache ein.

Referenzmaterial Liste der php.ini-Richtlinien Elemente, die in den php.ini-Einstellungen festgelegt werden können Bearbeiten Sie php.ini

my.cnf Dies ist die Konfigurationsdatei des MySQL-Servers. Detaillierte Einstellungen werden in der später beschriebenen Datei docker-compose.yml beschrieben, damit sie minimiert werden.

my.cnf


[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
[client]
default-character-set=utf8mb4

[mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci Der Zeichencode ist auf utf8mb4 gesetzt. [client] default-character-set=utf8mb4 Einstellungen für den Client-Zeichencode

Referenzartikel Aktuelle Hinweise zum Einstellen des Zeichensatzes auf utf8mb4 in MySQL (InnoDB) Zeichencode festlegen Grundlegendes MySQL ~ Teil 2 ~ my.cnf (Konfigurationsdatei)

docker-compose.yml Docker-Compose-Einstellungsdatei (Einstellung jedes Containers)

docker-compose.yml



# docker-Definiert die von compose verwendete Version.
version: '3'
#Jedes Element, das die Anwendung ausführt. In Diensten werden app, db und phpmyadmin als untergeordnete Elemente festgelegt.
services:
 #Der Container, in dem Laravel ausgeführt wird, ist unten von hier aus aufgeführt.
 app:
   #Entscheiden Sie hier den Namen des Containers.
   container_name: laravel_app
   #Es ist eine Einstellung, welcher Port verbunden werden soll. Es verbindet Port 8080 des Hosts und Port 80 des Containers. Der virtuelle Host an Port 80 ist 000-default.Es wurde bereits in conf gesetzt.
   ports:
     - "8000:80"
   #Gibt den Speicherort der Dockerfile-Einstellungen an. Build basierend auf dem Inhalt der Docker-Datei.
   build: ./Docker/App
   #Hier wird der Speicherort angegeben, an dem die Verzeichnisse auf Container- und Hostseite synchronisiert werden. Hier ist die Quelle von Laravel.
   volumes:
     - ./src:/var/www/html
 #Der Container, in dem MySQL ausgeführt wird, wird von hier aus festgelegt.
 db:
   #MySQL 5 von Docker Hub.Es ist eine Einstellung, die das offizielle Bild von 7 zieht.
   image: mysql:5.7
   #Der Containername wird angegeben.
   container_name: laravel_db
   #Die Umgebungsvariable im Container von MySQL wird angegeben. Bitte stellen Sie einen ein.
   environment:
     MYSQL_ROOT_PASSWORD: root
     MYSQL_DATABASE: laraveldb
     MYSQL_USER: dbuser
     MYSQL_PASSWORD: dbpass
     TZ: 'Asia/Tokyo'
   #Dies ist der Befehl beim Start.
   command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
   #Die Verzeichnisse werden synchronisiert. Bitte beachten Sie, dass Sie beim Schließen des Containers Daten aus der Datenbank verlieren, wenn Sie dies nicht schreiben. Für weitere Informationen möchten Sie möglicherweise die Docker-Persistenz überprüfen.
   volumes:
     - ./Docker/DB/volume:/var/lib/mysql
     - ./Docker/DB/my.cnf:/etc/mysql/conf.d/my.cnf
   #Es ist eine Einstellung zum Herstellen einer Verbindung mit Port 13306 des Hosts und Port 3306 im Container.
   ports:
     - 13306:3306
 #Die Einstellungen von phpmyadmin werden in der Schrift beschrieben.
 phpmyadmin:
   #Der Containername wird festgelegt.
   container_name: phpmyadmin
   #Diese Einstellung ruft das Image von phpmyadmin aus Docker Hub ab.
   image: phpmyadmin/phpmyadmin
   #Dies ist die Einstellung der Umgebungsvariablen von phpmyadmin. Bitte beachten und beschreiben Sie die MySQL-Einstellungen. PMA_Die Datenbank der Dienste ist für HOSTS angegeben.
   environment:
    - PMA_ARBITRARY=1
    - PMA_HOSTS=db
    - PMA_USER=root
    - PMA_PASSWORD=root
   ports:
    - 3000:80

Referenzartikel Ich habe erklärt, wie man docker-compose.yml schreibt Erstellen Sie eine MySQL-Testumgebung mit Docker (auch phpMyAdmin) So erstellen Sie eine LAMP + phpMyAdmin-Umgebung für PHP 7.4 und MariaDB 10.5 mit Docker

Starten Sie den Container

Bauen. (Gehen Sie in das Verzeichnis, in dem sich die Datei docker-compose.yml befindet.)

[Mac]$ docker-compose build
      :
      :
     Successfully built c1c2970ecb4b
     Successfully tagged docker_laravel_app:latest

Wenn es ohne Probleme beendet wird, starten Sie den Container mit dem folgenden Befehl.

[Mac]$ docker-compose up -d

-d wird beim Starten eines Containers im Hintergrund angehängt. Wenn Sie es nicht benötigen, entfernen Sie es.

Stellen Sie sicher, dass der Behälter oben ist.

[Mac]$ docker ps
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                                NAMES
e2164a5c2371        docker_laravel_app      "docker-php-entrypoi…"   3 minutes ago       Up 2 minutes        0.0.0.0:8000->80/tcp                 laravel_app
5d80cab0e266        mysql:5.7               "docker-entrypoint.s…"   3 minutes ago       Up 2 minutes        33060/tcp, 0.0.0.0:13306->3306/tcp   laravel_db
ad4786c13249        phpmyadmin/phpmyadmin   "/docker-entrypoint.…"   3 minutes ago       Up 2 minutes        0.0.0.0:3000->80/tcp                 phpmyadmin

Es gibt kein Problem, wenn die Containerinformationen ausgegeben werden.

Laravel Installation

Gehen Sie in den Container und installieren Sie das Laravel-Projekt.

Geben Sie den Container mit Docker Exec ein.

[Mac]$ docker exec -it laravel_app bash
root@e2164a5c2371:/var/www/html# //Wenn es wie links gezeigt angezeigt wird, befindet es sich im Container.

Installieren Sie Laravel mit Composer. Da Composer bereits wie in der Docker-Datei festgelegt installiert ist, kann es mit dem folgenden Befehl installiert werden. Installieren Sie dieses Mal 6 Serien Laravel. [Technisches Buch] Ich habe (https://www.amazon.co.jp/PHP-E3-83-95-E3-83-AC-E3-83-BC-E3-83-A0-E3- 83-AF-E3-83-BC-E3-82-AFLaravel-E5-85-A5-E9-96-80-E7-AC / dp / 4798060992 / ref = dp_ob_image_bk) verwendet die 6er-Serie von Laravel. Installieren Sie mit 6 Serien. (Es wird einige Zeit in Anspruch nehmen.)

[Im Container]# composer create-project "laravel/laravel=~6.0" --prefer-dist laravelapp

Führen Sie den folgenden Befehl aus, um die neueste Version zu installieren

[Im Container]# composer create-project laravel/laravel --prefer-dist laravelapp

Stellen Sie sicher, dass das Laravelapp-Verzeichnis im Verzeichnis / var / www / html im Container und im Verzeichnis src auf der Hostseite installiert ist. Bei der Entwicklung ist es kein Problem, wenn Sie den Quellcode im Verzeichnis src / laravelapp auf der Seite des Host-Betriebssystems bearbeiten.

Da Port 8000 des Host-Betriebssystems mit Port 80 im Container verbunden ist, wie in docker-compose.yml festgelegt http://localhost:8000 Wenn Sie darauf zugreifen und die TOP-Seite von Laravel ausgegeben wird, gibt es kein Problem. スクリーンショット 2020-11-07 1.04.45.png

Stellen Sie die Datenbank ein und stellen Sie eine Verbindung her.

Mit Docker erstellte Container erstellen Auflösungsnamen nach Containernamen. (Sie können über den Containernamen kommunizieren.) Um von einem Laravel-Container aus eine Verbindung zu einem MySQL-Container herzustellen, können Sie auf MySQL zugreifen, indem Sie auf Port 3306 mit dem Hostnamen (Containername) laravel_db zugreifen. Unter Bezugnahme auf die in docker-compose.yml vorgenommenen Einstellungen befindet sich in der .env-Datei eine MySQL-Einstellung, die sich nicht im Verzeichnis src / laravel befindet. Beschreiben Sie sie daher wie folgt. Wenn Sie die Einstellungen in docker-compose.yml geändert haben, passen Sie diese bitte entsprechend an.

DB_CONNECTION=mysql
DB_HOST=laravel_db
DB_PORT=3306
DB_DATABASE=laraveldb
DB_USERNAME=dbuser
DB_PASSWORD=dbpass

Ich werde mich tatsächlich verbinden.

[Mac]$ docker exec -it laravel_app bash
[Im Container]# cd laravel_app
[Im Container]# php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table (0.2 seconds)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table (0.18 seconds)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated:  2019_08_19_000000_create_failed_jobs_table (0.08 seconds)

Wenn es wie oben ausgegeben wird, gibt es kein Problem.

Stellen Sie eine Verbindung zu phpmyadmin her

phpmyadmin ist ein Tool, mit dem Sie den Inhalt der Datenbank im Browser einfach anzeigen und verwalten können. Einzelheiten entnehmen Sie bitte den Referenzmaterialien. Nützlich für die Verwaltung von SQL! Verwendung von phpMyAdmin [für Anfänger] Verwendung von phpMyAdmin

Greifen Sie auf die unten stehende URL zu und überprüfen Sie, ob phpmyadmin angezeigt wird. (In docker-compose.yml wurde bereits Port 3000 festgelegt.) http://localhost:3000/

image.png

Geben Sie den MySQL-Server ein.

Geben Sie den MySQL-Container ein und versuchen Sie, den MySQL-Server aufzurufen. Versuchen Sie, die Befehle in der folgenden Reihenfolge auszuführen.

[Mac]$ docker exec -it laravel_db bash
[Im Container]root@5d80cab0e266:/# mysql -uroot -p 
Enter password:(docker-compose.Root-Benutzerpasswort von yml bestimmt)
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 17
Server version: 5.7.32 MySQL Community Server (GPL)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| laraveldb          |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.02 sec)

mysql> use laraveldb;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+---------------------+
| Tables_in_laraveldb |
+---------------------+
| failed_jobs         |
| migrations          |
| password_resets     |
| users               |
+---------------------+
4 rows in set (0.00 sec)

mysql>

mysql -uroot -p Geben Sie den Benutzer mit -u an. Geben Sie diesmal als Root ein. -p ist eine Option zur Eingabe des Passworts.

show databases; Gibt alle Datenbanken aus.

use laraveldb; Der Befehl besteht darin, die laraveldb-Datenbank zu verwenden.

show tables; Dieser Befehl gibt alle Tabellen der verwendeten Datenbank (laraveldb) aus.

Schließlich

Damit ist der Bau der Laravel-Umgebung abgeschlossen, und wir müssen nur noch mit der Entwicklungsarbeit fortfahren! !! Vielen Dank für das Lesen bis zum Ende.

Zusammenfassung des Referenzartikels Namensbasierter virtueller Host So veröffentlichen Sie Websites mit mehreren Domänen auf einem Apache-Server Hinweis: Überprüfen Sie die Apache-Konfigurationsdatei (http.conf) (1) [Verstehen Sie das Apache-Verzeichnis](https://kana-linux.info/linux/apache%E3%81%AE%E3%83%87%E3%82%A3%E3%83%AC%E3%82 % AF% E3% 83% 88% E3% 83% AA% E3% 82% 92% E7% 90% 86% E8% A7% A3% E3% 81% 97% E3% 82% 88% E3% 81% 86 ) Apache-Module unter Ubuntu aktivieren Erstellen einer Entwicklungsumgebung für Laravel + Apache + MySQL mit Docker ↑ Ich habe besonders darauf hingewiesen. Liste der php.ini-Richtlinien Elemente, die in den php.ini-Einstellungen festgelegt werden können Bearbeiten Sie php.ini Aktuelle Hinweise zum Einstellen des Zeichensatzes auf utf8mb4 in MySQL (InnoDB) Zeichencode festlegen Grundlegendes MySQL ~ Teil 2 ~ my.cnf (Konfigurationsdatei) Ich habe erklärt, wie man docker-compose.yml schreibt Erstellen Sie eine MySQL-Testumgebung mit Docker (auch phpMyAdmin) So erstellen Sie eine LAMP + phpMyAdmin-Umgebung für PHP 7.4 und MariaDB 10.5 mit Docker Nützlich für die Verwaltung von SQL! Verwendung von phpMyAdmin [für Anfänger] Verwendung von phpMyAdmin

Recommended Posts

Erstellen einer Umgebung für Laravel + MySQL + phpMyadmin mit Docker
[Umgebungskonstruktion mit Docker] Rails 6 & MySQL 8
Aufbau einer Laravel-Entwicklungsumgebung mit Docker (Mac)
Konstruktionsnotiz für die MySQL 5.7 (Docker) -Umgebung
[Docker] Rails 5.2-Umgebungskonstruktion mit Docker
Erstellen Sie die Node.js-Umgebung mit Docker Compose
Umgebungsbau mit Docker für Anfänger
Konstruktion der Laravel + Docker Laradock-Nutzungsumgebung
Erstellen Sie mit Laradock eine Docker + Laravel-Umgebung
Erstellen Sie eine Entwicklungsumgebung für Rails-Anwendungen mit Docker [Docker, Rails, Puma, Nginx, MySQL]
SQL-Anweisungslernen ~ Umgebungskonstruktion ~ Docker + MySQL
Aufbau einer GPU-Umgebung mit Docker [Version Oktober 2020]
Bearbeiten Sie MySQL mit Befehlen in der Docker-Umgebung
[Docker] Entwicklung der Entwicklungsumgebung Rails6 / Ruby2.7 / MySQL8
Konstruktionsverfahren für die Docker-Umgebung "Rails 6 x MySQL 8" für die gemeinsame Nutzung mit Teams
Aufbau der Rails Docker-Umgebung
Erstellen Sie eine Laravel / Docker-Umgebung mit VSCode devcontainer
Konstruktions- und Entwicklungsverfahren für lokale WordPress-Umgebungen mit Docker
Redmine (Docker) Umgebungskonstruktionsnotiz
Erstellen einer Docker-Umgebung mit WSL
Aufbau der Docker x Spring Boot-Umgebung
Build Rails (API) x MySQL x Nuxt.js Umgebung mit Docker
[Rails / MySQL] Aufbau einer Mac-Umgebung
[Docker] postgres, pgadmin4-Umgebungskonstruktion
Aufbau einer Laravel-Umgebung (Ubuntu 18.04 LTS)
Erstellen einer Datenbankumgebung mit Docker in Spring Boot (IntellJ)
So erstellen Sie mit Docker ~ Express ~ eine [TypeScript + Vue + Express + MySQL] -Umgebung
Erstellen Sie mit Docker eine Vue3-Umgebung!
Erstellen Sie mit Docker eine lokale Couchbase-Umgebung
Erstellen Sie mit Docker eine Node.js-Umgebung
Lesen Sie die Dump-Datei mit MySQL von Docker
Konstruktionsverfahren für Rails on Docker-Umgebungen
Aktualisieren Sie MySQL mit Docker von 5.7 auf 8.0
Erstellen Sie mit Docker ein SPA für Laravel 6.2 / Vue.js / Nginx / Mysql / Redis
Erstellen einer Entwicklungsumgebung für Ruby on Rails mit Docker + VSCode (Remote Container)
Verfahren zum Erstellen einer Rails-Anwendungsentwicklungsumgebung mit Docker [Rails, MySQL, Docker]
So erstellen Sie mit Docker ~ MySQL ~ eine [TypeScript + Vue + Express + MySQL] -Umgebung