Dans cet article, un nouvel ingénieur diplômé inexpérimenté expliquera comment créer un environnement pour Laravel. Il y a certains points qui ne peuvent être atteints, mais merci. Faites-le sans utiliser git. Il explique également les fichiers de configuration tels que Dockerfile et docker-compose.yml. Il s'adresse aux personnes qui souhaitent comprendre les paramètres et créer un environnement. Aussi pour les débutants de Laravel! ..
Environnement d'exploitation Mac(Catallina 10.15.7) Docker 19.03.13 docker-compose 1.27.4
Veuillez installer docker et docker-compose à l'avance. Article de référence Installation de docker et docker-compose (édition Mac)
├── Docker/
│ ├── App/
│ │ ├ 000-default.conf
│ │ ├ Dockerfile
│ │ └ php.ini
│ └── DB/
│ ├ my.cnf
│ └ volume/
│
├── src/
└── docker-compose.yml
J'ai un article ici sur la commande tree pour ce type d'affichage. Affichage facile de la structure des répertoires! Commande d'arborescence (Mac) Présentation des options fréquemment utilisées
000-default.conf Ce sera le réglage d'Apache. Veuillez décrire le contenu suivant.
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>
1ère ligne: Il stipule de définir l'hôte virtuel pour le port 80.
2ème ligne: L'adresse du serveur. Si une requête est envoyée avec l'adresse laravel @ localhost, cela signifie que l'hôte virtuel qui vient d'être mentionné sera utilisé. Cette fois, c'est local, donc c'est approprié.
3e ligne: Le chemin du répertoire du journal des erreurs est spécifié. *
4ème ligne: Le chemin du répertoire du journal d'accès est spécifié. *
Lignes 5-7: Toutes les directives avec le contexte .htaccess
dans le conteneur à créer peuvent être utilisées.
/ etc / apache2 / envvars
dans le conteneur créé.Article de référence Hôte virtuel basé sur le nom Comment publier des sites avec plusieurs domaines sur un serveur Apache Remarque: Vérifiez le fichier de configuration Apache (http.conf) (1)
Dockerfile C'est le paramètre du conteneur php (laravel). Veuillez décrire le contenu suivant.
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
Je tire une image appelée php: 7.4-apache de Docker Hub.
`ADD php.ini /usr/local/etc/php/
ADD 000-default.conf /etc/apache2/sites-enabled/`
Il est copié dans le répertoire spécifié dans le conteneur qui crée php.ini expliqué plus tard et 000-default.conf expliqué ci-dessus.
`RUN cd /usr/bin && curl -s http://getcomposer.org/installer | php && ln -s /usr/bin/composer.phar /usr/bin/composer`
À l'intérieur du conteneur, j'ai installé le composeur requis pour installer laravel.
`RUN apt-get update \
&& apt-get install -y \
git \
zip \
unzip \
vim \
libpng-dev \
libpq-dev \
&& docker-php-ext-install pdo_mysql`
J'installe un middleware dans un conteneur. Git, zip, unzip, vim, libpng-dev, libpq-dev peuvent être utilisés dans le conteneur.
`RUN mv /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled
RUN /bin/sh -c a2enmod rewrite`
Dans le conteneur, j'exécute la commande mv pour déplacer rewrite.load vers le répertoire spécifié.
Après cela, j'exécute une commande qui active rewrite.load. Veuillez consulter le deuxième matériel de référence pour plus de détails.
Matériel de référence
[Comprendre le répertoire Apache](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 )
[Activer les modules Apache sur Ubuntu](https://www.t3a.jp/blog/infrastructure/apache2-mod-add/)
[Création d'un environnement de développement pour Laravel + Apache + MySQL avec Docker](https://note.com/pocke_techblog/n/n8af813848fa0)
php.ini
Ce sera le paramètre de php.
Veuillez copier et coller ce qui suit.
#### **`php.ini`**
```ruby
[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
default_charset = "UTF-8"
mbstring.language = "Japanese"
date.timezone = "Asia/Tokyo"
Vous définissez littéralement le fuseau horaire.
default_charset
Spécifiez le code de caractère par défaut à afficher dans l'en-tête HTTP.
mbstring.language = "Japanese"
Définissez la langue par défaut.
Matériel de référence Liste des directives php.ini Éléments qui peuvent être définis dans les paramètres php.ini Modifier php.ini
my.cnf Il s'agit du fichier de configuration du serveur MySQL. Les paramètres détaillés sont décrits dans docker-compose.yml décrit plus tard, ils sont donc réduits au minimum.
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
Le code de caractère est défini sur utf8mb4.
[client] default-character-set=utf8mb4
Paramètres du code de caractère du client
Article de référence Notes actuelles sur la définition de charset sur utf8mb4 dans MySQL (InnoDB) Définir le code de caractère Basic MySQL ~ Part 2 ~ my.cnf (fichier de configuration)
docker-compose.yml fichier de paramètres docker-compose (paramètre de chaque conteneur)
docker-compose.yml
# docker-Définit la version utilisée par compose.
version: '3'
#Chaque élément qui exécute l'application. Dans les services, app, db et phpmyadmin sont définis comme des éléments enfants.
services:
#Les conteneurs qui exécutent laravel sont répertoriés ci-dessous à partir d'ici.
app:
#Décidez ici du nom du conteneur.
container_name: laravel_app
#C'est un paramètre du port à connecter. Il connecte le port 8080 de l'hôte et le port 80 du conteneur. L'hôte virtuel sur le port 80 est 000-default.Il a déjà été défini dans conf.
ports:
- "8000:80"
#Spécifie l'emplacement des paramètres Dockerfile. Construisez en fonction du contenu du Dockerfile.
build: ./Docker/App
#L'emplacement où le conteneur et les répertoires côté hôte sont synchronisés est spécifié ici. Voici la source du laravel.
volumes:
- ./src:/var/www/html
#Le conteneur qui exécute MySQL est défini à partir d'ici.
db:
#MySQL 5 depuis Docker Hub.C'est un paramètre qui tire l'image officielle de 7.
image: mysql:5.7
#Le nom du conteneur est spécifié.
container_name: laravel_db
#La variable d'environnement dans le conteneur de MySQL est spécifiée. Veuillez en définir un.
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: laraveldb
MYSQL_USER: dbuser
MYSQL_PASSWORD: dbpass
TZ: 'Asia/Tokyo'
#C'est la commande au démarrage.
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
#Les répertoires sont synchronisés. Veuillez noter que si vous n'écrivez pas ici, la base de données perdra des données lorsque vous fermerez le conteneur. Pour plus d'informations, vous pouvez vérifier la persistance du docker.
volumes:
- ./Docker/DB/volume:/var/lib/mysql
- ./Docker/DB/my.cnf:/etc/mysql/conf.d/my.cnf
#C'est un paramètre pour se connecter au port 13306 de l'hôte et au port 3306 dans le conteneur.
ports:
- 13306:3306
#Les paramètres de phpmyadmin sont décrits dans l'écriture.
phpmyadmin:
#Le nom du conteneur est décidé.
container_name: phpmyadmin
#C'est un paramètre qui extrait l'image de phpmyadmin de Docker Hub.
image: phpmyadmin/phpmyadmin
#C'est le réglage de la variable d'environnement de phpmyadmin. Veuillez consulter et décrire les paramètres MySQL. PMA_La base de données des services est spécifiée pour HOSTS.
environment:
- PMA_ARBITRARY=1
- PMA_HOSTS=db
- PMA_USER=root
- PMA_PASSWORD=root
ports:
- 3000:80
Article de référence J'ai expliqué comment écrire docker-compose.yml Créer un environnement d'essai MySQL avec Docker (également phpMyAdmin) Comment créer un environnement LAMP + phpMyAdmin pour PHP 7.4 et MariaDB 10.5 avec Docker
Construire. (Allez dans le répertoire où se trouve le fichier docker-compose.yml)
[Mac]$ docker-compose build
:
:
Successfully built c1c2970ecb4b
Successfully tagged docker_laravel_app:latest
S'il se termine sans problème, démarrez le conteneur avec la commande suivante.
[Mac]$ docker-compose up -d
-d est attaché lors du lancement d'un conteneur en arrière-plan. Si vous n'en avez pas besoin, supprimez-le.
Assurez-vous que le conteneur est en place.
[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
Il n'y a aucun problème si les informations sur le conteneur sont sorties.
Entrez dans le conteneur et installez le projet laravel.
Entrez dans le conteneur avec docker exec.
[Mac]$ docker exec -it laravel_app bash
root@e2164a5c2371:/var/www/html# //S'il est affiché comme illustré à gauche, il se trouve dans le conteneur.
Installez laravel à l'aide de composer. Puisque composer est déjà installé tel que défini dans le Dockerfile, il peut être installé avec la commande suivante. Cette fois, installez la série 6 laravel. [Livre technique] J'ai (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) utilise la série 6 de laravel. Installez avec 6 séries. (Cela prendra du temps.)
[Dans le container]# composer create-project "laravel/laravel=~6.0" --prefer-dist laravelapp
Pour installer la dernière version, exécutez la commande suivante
[Dans le container]# composer create-project laravel/laravel --prefer-dist laravelapp
Assurez-vous que le répertoire laravelapp est installé dans le répertoire / var / www / html
à l'intérieur du conteneur et dans le répertoire src côté hôte.
Lors du développement, il n'y a aucun problème si vous modifiez le code source dans le répertoire src / laravelapp du côté du système d'exploitation hôte.
Puisque le port 8000 du système d'exploitation hôte est connecté au port 80 dans le conteneur comme défini dans docker-compose.yml http://localhost:8000 Si vous accédez et que la page TOP de laravel est sortie, il n'y a pas de problème.
Les conteneurs créés avec Docker-compose résolvent les noms par nom de conteneur. (Vous pouvez communiquer par nom de conteneur.)
Pour vous connecter à un conteneur MySQL depuis un conteneur laravel, vous pouvez accéder à MySQL en accédant au port 3306 avec le nom d'hôte (nom du conteneur) laravel_db.
Tout en faisant référence aux paramètres définis dans docker-compose.yml, il existe un paramètre MySQL dans le fichier .env qui ne se trouve pas dans le répertoire src / laravel
, alors décrivez-le comme suit. Si vous avez modifié les paramètres de docker-compose.yml, veuillez les ajuster en conséquence.
DB_CONNECTION=mysql
DB_HOST=laravel_db
DB_PORT=3306
DB_DATABASE=laraveldb
DB_USERNAME=dbuser
DB_PASSWORD=dbpass
Je vais vraiment me connecter.
[Mac]$ docker exec -it laravel_app bash
[Dans le container]# cd laravel_app
[Dans le 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)
S'il est émis comme ci-dessus, il n'y a pas de problème.
phpmyadmin est un outil qui vous permet de visualiser et de gérer facilement le contenu de la base de données sur le navigateur. Veuillez consulter les documents de référence pour plus de détails. Utile pour gérer SQL! Comment utiliser phpMyAdmin [pour les débutants] Comment utiliser phpMyAdmin
Accédez à l'URL ci-dessous et vérifiez que phpmyadmin est affiché. (Il a déjà été défini sur le port 3000 dans docker-compose.yml) http://localhost:3000/
Entrez dans le conteneur MySQL et essayez d'entrer dans le serveur MySQL. Essayez d'exécuter les commandes dans l'ordre suivant.
[Mac]$ docker exec -it laravel_db bash
[Dans le container]root@5d80cab0e266:/# mysql -uroot -p
Enter password:(docker-compose.Mot de passe de l'utilisateur root déterminé par yml)
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
Spécifiez l'utilisateur avec -u. Cette fois, entrez en tant qu'utilisateur root.
-p est une option pour entrer le mot de passe.
show databases;
Sort toutes les bases de données.
use laraveldb;
La commande consiste à utiliser la base de données laraveldb.
show tables;
Cette commande génère toutes les tables de la base de données (laraveldb) en cours d'utilisation.
Ceci termine la construction de l'environnement laravel, et il ne nous reste plus qu'à procéder aux travaux de développement! !! Merci d'avoir lu jusqu'au bout.
Résumé de l'article de référence Hôte virtuel basé sur le nom Comment publier des sites avec plusieurs domaines sur un serveur Apache Remarque: Vérifiez le fichier de configuration Apache (http.conf) (1) [Comprendre le répertoire Apache](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 ) Activer les modules Apache sur Ubuntu Création d'un environnement de développement pour Laravel + Apache + MySQL avec Docker ↑ J'y ai surtout fait référence. Liste des directives php.ini Éléments qui peuvent être définis dans les paramètres php.ini Modifier php.ini Notes actuelles sur la définition de charset sur utf8mb4 dans MySQL (InnoDB) Définir le code de caractère Basic MySQL ~ Part 2 ~ my.cnf (fichier de configuration) J'ai expliqué comment écrire docker-compose.yml Créer un environnement d'essai MySQL avec Docker (également phpMyAdmin) Comment créer un environnement LAMP + phpMyAdmin pour PHP 7.4 et MariaDB 10.5 avec Docker Utile pour gérer SQL! Comment utiliser phpMyAdmin [pour les débutants] Comment utiliser phpMyAdmin
Recommended Posts