Laradockで環境構築するとnginxがデフォルトになっています。
本番環境がApacheとMariaDB10.3のため、laradockの設定を変更します。
要件
- Git 2.35.1
- Docker version 20.10.13
- docker-compose version 1.29.2, build 5becea4c
- Laradock v12.1
コンテナの構成
- Apache2.4
- MariaDB10.3
- PHP7.4
- phpMyAdmin
ディレクトリ構成
laradock-Apache ... プロジェクトルート
┗ laradock ... Laradock
┗ laravel ... Laravel app project
┗ public ... 公開ディレクトリ(Document Root)
Laradockのset up
プロジェクトルートへ移動
$ mkdir laradock-Apach
$ cd ~/laradock-Apache/
Laradockをclone
$ git clone https://github.com/laradock/laradock.git
Laradockへ移動
$ cd ~/laradock-Apach/laradock
.envを作成
$ vi cp .env.example .env
.envを編集
$ vim .env
---
### PHP Version ###########################################
- PHP_VERSION=7.3
+ PHP_VERSION=7.4
### MARIADB ###############################################
- MARIADB_VERSION=latest
+ MARIADB_VERSION=10.3
- MARIADB_DATABASE=default
+ MARIADB_DATABASE=laradock
### WORKSPACE #############################################
- WORKSPACE_INSTALL_MYSQL_CLIENT=false
+ WORKSPACE_INSTALL_MYSQL_CLIENT=true
### PHP MY ADMIN ##########################################
- PMA_DB_ENGINE=mysql
+ PMA_DB_ENGINE=mariadb
### APACHE ################################################
- APACHE_DOCUMENT_ROOT=/var/www/
+ APACHE_DOCUMENT_ROOT=/var/www/laravel/public/
---
Apacheの設定変更
apache、default.apache.confのバックアップを取っておきます。
$ cp apache2/sites/default.apache.conf apache2/sites/default.apache.conf.example
$ mv apache2/sites/default.apache.conf.example apache2/sites/default.apache.conf
apacheのvirtual hostsを編集
$ vim apache2/sites/default.apache.conf
<VirtualHost *:80>
ServerName laradock.test
- DocumentRoot /var/www/
+ DocumentRoot /var/www/laravel/public/
Options Indexes FollowSymLinks
- <Directory "/var/www/">
+ <Directory "/var/www/laravel/public/">
AllowOverride All
<IfVersion < 2.4>
Allow from all
</IfVersion>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
</Directory>
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
MariaDBの設定変更
mariadbサーバの文字セットをutf8mb4に変更します。
$ cd ~/laradock-Apach/laradock/mariadb
$ cp my.cnf my.cnf.example
$ vi my.cnf
+ [mariadb]
+ character-set-server = utf8mb4
+ [client-mariadb]
+ default-character-set = utf8mb4
laradock 起動
コンテナ起動
$ docker-compose up -d workspace apache2 mariadb phpmyadmin
Laravelプロジェクトの作成
$ docker-compose exec workspace bash
root@509785bbe57:/var/www$
root@509785bbe57:/var/www$ composer create-project "laravel/laravel=8.*" laravel --prefer-dist
root@509785bbe57:/var/www$ cd laravel
root@509785bbe57:/var/www/laravel$ chmod -R 777 storage/
Laravelの環境設定変更
作成されたLaravelプロジェクト配下の.envを更新します。
root@509785bbe57:/var/www$ cd laravel/
root@509785bbe57:/var/www/laravel$ vi .env
/var/www/laravel/.env
DB_CONNECTION=mysql
DB_HOST=mariadb
DB_PORT=3306
DB_DATABASE=laradock
DB_USERNAME=default
DB_PASSWORD=secret
root@509785bbe57:/var/www/laravel$ exit
動作確認
全てのコンテナがupになっていればOKです。
$ docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
laradock_apache2_1 /opt/docker/bin/entrypoint ... Up 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
laradock_docker-in-docker_1 dockerd-entrypoint.sh Up 2375/tcp, 2376/tcp
laradock_mariadb_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp
laradock_php-fpm_1 docker-php-entrypoint php-fpm Up 9000/tcp, 0.0.0.0:9003->9003/tcp
laradock_phpmyadmin_1 /docker-entrypoint.sh apac ... Up 0.0.0.0:8081->80/tcp
laradock_workspace_1 /sbin/my_init Up 0.0.0.0:2222->22/tcp, 0.0.0.0:3000->3000/tcp, 0.0.0.0:3001->3001/tcp, 0.0.0.0:4200->4200/tcp, 0.0.0.0:8001->8000/tcp, 0.0.0.0:8080->8080/tcp
http://localhostにアクセスしてLaravelのトップ画面が表示されればOKです。
http://localhost:8081でphpmyadminにアクセスできることを確認します。
.envのmariadbに設定したユーザー、パスワードでログインできればOKです。
マイグレーションの実行
マイグレーションの実行が無事に完了できるか確認します。
root@509785bbe57:/var/www/laravel$ php artisan migrate
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table (22.06ms)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table (21.03ms)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated: 2019_08_19_000000_create_failed_jobs_table (25.08ms)
Migrating: 2019_12_14_000001_create_personal_access_tokens_table
Migrated: 2019_12_14_000001_create_personal_access_tokens_table (32.52ms)
MysQLクライアント
MySQLクライアントでログインできるか確認します。
root@509785bbe57:/var/www$ mysql -h mariadb -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 202
Server version: 5.5.5-10.3.34-MariaDB-1:10.3.34+maria~focal mariadb.org binary distribution
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
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>
これで、Laravelの開発をスタートする準備完了です。
補足:Laradock(docker) 操作
dockerのworkspaceにログイン
$ docker-compose up -d workspace apache2 mariadb phpmyadmin
docker コンテナ停止
$ docker-compose down
docker コンテナ停止、イメージ削除
$ docker-compose down --rmi all
docker コンテナ停止、ボリューム削除
$ docker-compose down -v
Dockerの設定ファイル(apacheなど)変更した場合
$ docker-compose up -d --build workspace apache2 mariadb phpmyadmin
or
$ docker-compose build apache2 など