はじめに
大阪の会社でwebエンジニアしています。
そろそろアウトプットしていきたいのと、環境構築中ヒマなのでqiitaを書いてみようと思います。エンジニアになって2カ月と、未熟なので間違ったことを書いてしまうこともあるかと思いますが、その時はご指摘お願いします。
概要
普段、業務でLaravelを使うことが多いので、今回はlaradockを使いdokcer+Laravel×MySQL×nginxの環境を構築していきたいと思います。
###必要なものリスト
- Docker for mac
- Git
設定
使用するディレクトリの作成、移動
$ mkdir project
$ cd project
laradockをクローン
$ git clone https://github.com/LaraDock/laradock.git
laravelを配置するフォルダ作成
$ mkdir src
projectの最終的なディレクトリ構成
├── laradock
└── src
クローンしたlaradockに移動
cd laradock
サンプルの環境設定ファイルをコピーして、laradockの環境設定ファイル作成
$ cp env-example .env
srcフォルダ配下にLaravelをインストールするので、パスを下記のように修正します。
### Paths #################################################
# Point to the path of your applications code on your host
APP_CODE_PATH_HOST=../src/
###dockerコンテナ起動
下記のコマンドでウェブサーバー(nginx)とデータベースサーバー(mysql)のコンテナ起動
$ docker-compose up -d nginx mysql
成功すれば下記のようになり
Creating laradock_mysql_1 ... done
Creating laradock_docker-in-docker_1 ... done
Creating laradock_workspace_1 ... done
Creating laradock_php-fpm_1 ... done
Creating laradock_nginx_1 ... done
localhostで接続するとウェブサーバー(nginx)が起動している事がわかります。
docker-composeコマンドを使い Docker コンテナ上の複数のサービスを管理します。
psは表示はコンテナ一覧を表示できます。
$ docker-compose ps
下記のようにstateがupになっていればコンテナが立ち上がっている状態です。
###mysqlコンテナ接続
Laradockは、現在(2019/6)では、デフォルトがmysql 8系で、認証方式がLaravel側でサポートされていないため、認証に失敗してしまいます。
なので、Laradockの下記のコマンドでmysqlコンテナに接続し、mysqlの認証方式を変更します。
デフォルトのユーザ情報
- user: default
- password: secret
$ docker-compose exec mysql bash
# mysql -u default -psecret
認証方式変更
mysql> alter user 'default'@'%' identified with mysql_native_password by 'secret';
Query OK, 0 rows affected (0.01 sec)
Laravelのインストール
workspaceコンテナに接続します。
$ docker-compose exec workspace bash
パッケージの更新
$ apt-get update
workspaceコンテナ内では、composerコマンドが使えるようになっているので、これを使用してlaravelをインストール
root@c3cb5c10e656:/var/www# composer create-project --prefer-dist laravel/laravel ./
上記コマンド実行後、「Do not run Composer as root/super user! See https://getcomposer.org/root for details」と警告が出ますが、composerコマンドをrootユーザで実行した事が原因です。本来はセキュリティ上良くないですが、インストールは出来るので今回はします。
インストール終了後、localhostに接続するとlaravelが立ち上がっています。
mysqlへ接続
.envファイル編集(Laradockの.envファイルとは別です)
下記の値に変更
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=default
DB_USERNAME=default
DB_PASSWORD=secret
最後にDBがちゃんと接続されているかlaravelのartisanコマンドでデフォルトのマイグレーションファイルを実行する
root@c3cb5c10e656:/var/www# php artisan migrate
以上で環境を構築することができました。
次回は、laravelでreactを使えるように、まとめたいと思います。