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)
├── 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
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>
Zeilen 5-7: Alle Anweisungen mit dem Kontext ".htaccess" im zu erstellenden Container können verwendet werden.
/ etc / apache2 / envvars
im erstellten Container definiert.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
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.
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.
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.
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/
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.
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