Memo

メモ > サーバ > 各論: Docker > Laradockによる開発環境構築

■Laradockによる開発環境構築
Homesteadは必要なものが揃った開発環境だが、実運用ではこんな多機能なサーバを用意することはまず無い 本番環境に近づけた開発環境を用意できるように、Docker用の環境が提供された Laradockを使ってLaravel 5.5環境を構築する - Qiita https://qiita.com/rock619/items/62c2ab2252c405e26479 Laravel使った開発にLaradockを使うというのはどうだろう - Qiita https://qiita.com/niisan-tokyo/items/d4485b8bb4fbfcfcc6be ■前提 ・docker/laravel を作業ディレクトリとする(ここが共有ディレクトリとして設定される) ・docker/laravel/laradock にLaradockをインストールするものとする ・docker/laravel/blog にプロジェクトをインストールするものとする(複数プロジェクトがあれば、同階層に作成する) ・MySQLはデフォルトで8が使用されるが、セキュリティが強化されて扱いづらいので5.7に変更して使用する 【Docker】MySQL8.0系を使う時に発生する問題について - websandbag ブログ http://blog.websandbag.com/entry/2018/05/17/121730 ■Laradockの起動
$ cd docker/laravel $ git clone https://github.com/laradock/laradock.git docker/laravel/laradock … Laradockの入手 $ cd laradock $ cp env-example .env … .envファイル(Laradockの設定ファイル)の作成
Laradock の .env を編集(MySQLのバージョンを5.7にする)
MYSQL_VERSION=latest ↓ MYSQL_VERSION=5.7
以下のように起動する
$ docker-compose up -d nginx mysql workspace phpmyadmin … コンテナの初期化(初回は非常に時間がかかる) $ docker container ls
http://127.0.0.1/ (この時点では「404 Not Found」と表示される) ■Laravelの起動 workspaceコンテナからLaravelを操作できる これはcomposerやnodeなど、Laravelに必要なツール一式が格納されたコンテナ
$ docker-compose exec --user=laradock workspace bash … 仮想環境へログイン $ composer create-project --prefer-dist "laravel/laravel=5.5.*" blog … Laravelをインストール $ exit … 仮想環境をいったん抜ける
Laradock の .env を編集(公開ディレクトリをblog内のpublicにする)
APP_CODE_PATH_HOST=../ ↓ APP_CODE_PATH_HOST=../blog
$ docker-compose stop … 仮想環境を再起動(いったん停止させてから起動) $ docker-compose up -d nginx mysql workspace phpmyadmin $ docker-compose exec --user=laradock workspace bash … 仮想環境へ再度ログインする場合 $ php artisan --version
■PHPからMySQLへの接続 いったんPure-PHPでMySQLへの接続を検証してみる /var/www/public/mysql.php
<?php try { $pdo = new PDO( 'mysql:dbname=blog;host=mysql', 'laradock', 'secret' ); $stmt = $pdo->query('SELECT NOW() AS now;'); $data = $stmt->fetch(PDO::FETCH_ASSOC); echo "<p>" . $data['now'] . "</p>\n"; $pdo = null; } catch (PDOException $e) { exit($e->getMessage()); }
実行すると以下のエラーになる(この時点では、laradockユーザもblogデータベースも作っていないので当然) SQLSTATE[HY000] [1045] Access denied for user 'laradock'@'172.20.0.6' (using password: YES) 以下のように、MySQLコンテナでユーザを作成するとアクセスできるようになる
$ docker-compose exec mysql bash # mysql -u root -p root > CREATE USER 'laradock'@'172.20.0.6' IDENTIFIED BY 'secret'; > GRANT ALL PRIVILEGES ON blog.* TO laradock; > CREATE DATABASE blog DEFAULT CHARACTER SET utf8mb4;
■phpMyAdminの利用 以下にphpMyAdminがある http://127.0.0.1:8080/ サーバ: mysql ユーザ名: laradock パスワード: secret ログインしようとすると以下のエラーになる(phpMyAdminコンテナからの接続設定をしていないため)
mysqli_real_connect(): (HY000/1045): Access denied for user 'laradock'@'172.20.0.5' (using password: YES)
ユーザを作成するとアクセスできるようになる
> CREATE USER 'laradock'@'172.20.0.5' IDENTIFIED BY 'secret';
■LaravelからMySQLへの接続 マイグレーションしようとすると以下のエラーになる(workspaceコンテナからの接続設定をしていないため)
$ docker-compose exec --user=laradock workspace bash $ php artisan migrate SQLSTATE[HY000] [1045] Access denied for user 'laradock'@'172.20.0.4' (using password: YES)
ユーザを作成するとマイグレーションできるようになる
> CREATE USER 'laradock'@'172.20.0.4' IDENTIFIED BY 'secret';
■次回からの起動 以下で起動できる しばらく待たないと「502 Bad Gateway」のエラーになる可能性があるので注意
$ cd docker/laravel/laradock $ docker-compose up -d nginx mysql workspace phpmyadmin
以下でLaravelの操作ができる
$ docker-compose exec --user=laradock workspace bash $ php artisan --version
以下でMySQLの操作ができる
$ docker-compose exec mysql bash # mysql -u root -p root
■MySQLコンテナが起動しなくなった場合 Laradock の .env を以下のように編集すると、その後MySQLコンテナが起動しなくなった
MYSQL_VERSION=latest ↓ MYSQL_VERSION=5.7
LaradockでMySQLがどうしても立ち上がらない人あつまれー! - Qiita https://qiita.com/lara_bell/items/d4bd1340a5cc7dfcfcb4 MySQLのデータは、.envの以下の場所で永続化されている
# Choose storage path on your machine. For all storage systems DATA_PATH_HOST=~/.laradock/data
壊れたデータが残っている可能性がある。以下のフォルダを削除して各コンテナを再起動すると、MySQLコンテナが起動する C:\Users\refirio\.laradock ■参考 Laradockを使ってLaravel 5.5環境を構築する - Qiita https://qiita.com/rock619/items/62c2ab2252c405e26479 LaradockでMySQL5.5を使う(Docker + Laravel) - Qiita https://qiita.com/mom0tomo/items/40219773c705b5175825 DockerとLaradockでPHPフレームワークとCMSの開発環境を構築する【MySQL( latest)8.0.11対応】 - Qiita https://qiita.com/2no553/items/c1da7bb6dfed68c5af1b

Advertisement