はじめに
今更ですがLaravelをLaradockを使い環境構築してみます。
(この投稿は自分用メモでもあります。)
前提
docker-composeコマンドが使える
> docker-compose --version
docker-compose version 1.23.2, build 1110ad01
gitコマンドが使える
> git --version
git version 2.21.0.windows.1
ちなみにPCはWindows10 proを使用しています。
1.作業ディレクトリの作成&Laradockのクローン
# 作業ディレクトリを作成
> mkdir dockerworkspace
# 作業ディレクトリに移動
> cd dockerworkspace
# GitからLaradockをダウンロード
> git clone https://github.com/LaraDock/laradock.git
2.「.env」ファイルの作成
# laradockディレクトリに移動
> cd laradock
# env-exampleをコピーし.envファイル作成
> cp env-example .env
3.コンテナの起動
# laradockディレクトリ上で入力
# コンテナの起動
> docker-compose up -d nginx
Recreating laradock_docker-in-docker_1 ... done
Recreating laradock_workspace_1 ... done
Recreating laradock_php-fpm_1 ... done
Recreating laradock_nginx_1 ... done
コンテナの起動を確認してみましょう。
# laradockディレクトリ上で入力
# コンテナの一覧を表示
> docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------------------------------------
laradock_docker-in-docker_1 dockerd-entrypoint.sh Up 2375/tcp
laradock_mysql_1 docker-entrypoint.sh mysqld Exit 255 0.0.0.0:3306->3306/tcp, 33060/tcp
laradock_nginx_1 /bin/bash /opt/startup.sh Up 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
laradock_php-fpm_1 docker-php-entrypoint php-fpm Up 9000/tcp
laradock_phpmyadmin_1 /run.sh supervisord -n -j ... Exit 255 0.0.0.0:8080->80/tcp, 9000/tcp
laradock_redis_1 docker-entrypoint.sh redis ... Exit 255 0.0.0.0:6379->6379/tcp
laradock_workspace_1 /sbin/my_init Up 0.0.0.0:2222->22/tcp
Stateがupになっていれば起動していることになります。
http://localhostにアクセスします。
nginxの起動を確認できました。Not Foundは後ほど対処します。
4.Laravelプロジェクトの作成
laradock_workspace_1にアクセスしLaravelアプリケーションを作成します。
# laradockディレクトリ上で入力
# workspaceコンテナにアクセス
# root@xxxxxxxx:/var/www$ というディレクトリに入る
> docker-compose exec --user=laradock workspace bash
# Laravelアプリケーションの作成
# ここではsample_appという名前で作成
root@xxxxxxxx:/var/www$ composer create-project laravel/laravel sampleApp
5.nginxの設定ファイルの編集
root@xxxxxxxx:/var/www$ exit
# laradockディレクトリ上で入力
# コンテナの停止
> docker-compose stop
# laradockディレクトリ上で入力
# dockerworkspace/laradock/nginx/sitesの中のdefaul.confをdefault.conf.backup等の名前にしコピー
> cd nginx/sites
> cp default.conf default.conf.backup
# 同じディレクトリにあるlaravel.conf.exampleの中のテキストをコピーし、default.confにペースト
> cp laravel.conf.example default.conf
dockerworkspace/laradock/nginx/sites/default.confを編集します。
# 一部抜粋
server_name laravel.test;
# root /var/www/laravel/public; # 変更前
root /var/www/sampleApp/public; # 変更後
index index.php index.html index.htm;
さらにlaradockディレクトリにある.env(はじめにコピーして作ったファイルですね)も編集します。
# 一部抜粋
### Paths #################################################
# Point to the path of your applications code on your host
# APP_CODE_PATH_HOST=../ # 変更前
APP_CODE_PATH_HOST=../sampleApp # 変更後
6.LaravelのWelcome画面を見る
> docker-compose up -d nginx
http://localhostにアクセスします。
追記
MySQLに接続
設定ファイルの編集
Laradockの初期設定ではMySQLの最新が設定されており認証でエラーが出てしまうそうです。laradock/.envを編集します。
### MYSQL #################################################
# MYSQL_VERSION=latest # 変更前
MYSQL_VERSION=5.7 # 変更後
Laravelの設定もします。sample_app/.envを編集します。
DB_CONNECTION=mysql
# DB_HOST=127.0.0.1 # 変更前
DB_HOST=mysql # 変更後
DB_PORT=3306
# DB_DATABASE=homestead # 変更前
# DB_USERNAME=homestead # 変更前
DB_DATABASE=default # 変更後
DB_USERNAME=default # 変更後
DB_PASSWORD=secret
これでMySQLへの接続ができます。
migrateしてみる
# laradockディレクトリ上で入力
> docker-compose up -d nginx mysql
# 省略
> docker-compose exec --user=laradock workspace bash
root@xxxxxxxx:/var/www$ php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table
DBを見てみる
# laradockディレクトリ上で入力
> docker-compose exec mysql bash
root@xxxxxxxxxx:/# mysql -udefault -psecret
# 省略
mysql> use default;
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_default |
+-------------------+
| migrations |
| password_resets |
| users |
+-------------------+
4 rows in set (0.00 sec)
最後に
DockerはLaradockでしか触ったことがないので間違った認識、改善点等ありましたらご指摘お願いいたします。
Docker勉強しよう、、、。