Laradockを利用してDocker上にLaravel環境を構築する手順です。 NginxとPHP7.3の環境にします。
※ 多少抜け漏れがあります。GW中には修正します。
環境とバージョン
- Laradock
- PHP 7.3
- Laravel 5.3
- Nginx
DBの接続はまだ書けていません。 作業環境がWindows10 Homeであるため、DockerはDocker Tool Boxを利用しています。
準備
gitとDocker、docker-composeを用意してください。
- 公式:Docker CE
また、当サイトではDockerの環境の構築手順は以下の記事を用意しています。
- Windows 10 HomeまたはWindows 7の場合
- Windows 10 Proの場合
Laravelの環境構築
今回はproject
ディレクトリを作ってその中で作業します。
最終的なLaradockとLaravelのアプリMyApp
の構成は以下のようになります。
project/
├─ laradock
| ├─ nginx
| ├─ php-fpm
| └─ .env
└─ MyApp
├─ public # nginxで通すパス
└─ composer.json # 依存するパッケージを定義するためのファイル
laradockをインストールする
laradockを導入していきます。
# projectに移動してclone
$ cd path/to/project
project$ git clone https://github.com/Laradock/laradock.git
# 設定ファイルをリネームする
project$ cd laradock
laradock$ cp env-example .env
project/laradock/.env
には、Docker Imageの設定が入っています。
.envの設定とPHPのバージョン変更
NginxでPHPを動かすためphp-fpmを使います。理由はこちら。
project/laradock/.env
にあるPHPのバージョンを変更します。
### PHP Version ###########################################
# Select a PHP version of the Workspace and PHP-FPM containers (Does not MyApply to HHVM). Accepted values: 7.3 - 7.2 - 7.1 - 7.0 - 5.6
- PHP_VERSION=7.2
+ PHP_VERSION=7.3
バージョンを変更したので、php-fpmのイメージを作り直します。
laradock$ docker-compose build php-fpm
他のバージョンについてはこちら。
コンテナの作成と開始
必要なコンテナを立ち上げます。
laradock$ docker-compose up -d nginx mysql workspace
立ち上がっているコンテナを確認します。
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 3
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_workspace_1 /sbin/my_init Up 0.0.0.0:2222->22/tcp
php-fpmコンテナも一緒に立ち上がります。
※ mysqlコンテナが立ち上がっていないため、いつか修正する。
Laravelのセットアップ
workspaceコンテナにLaravelをインストールしていきます。
コンテナの準備
workspaceのコンテナに入って、Laravelをインストールする準備をします。
docker-compose exec {コンテナ名} bash
で立ち上げているコンテナに入ることができます。
laradock$ docker-compose exec workspace bash
/var/www#
イメージのOSディストリビューションはUbuntu 16.04 LTSでした。
インストーラーapt-get
の更新と作業用のvim
を入れておきます。
/var/www# apt-get update
/var/www# apt-get install vim
Laravel 5.8のインストール
LaravelのプロジェクトMyAppを作る。
/var/www# mkdir MyApp
/var/www# ls
MyApp
composerは既に入っています。 Laravel 5.8をインストールします。
/var/www# composer create-project "laravel/laravel=5.8.*" MyApp
# 中を確認します。
/var/www# ls MyApp/
MyApp bootstrap composer.lock database phpunit.xml readme.md routes storage vendor
artisan composer.json config package.json public resources server.php tests webpack.mix.js
アプリケーションキーの作成と.env
ファイルを作成します。
/var/www# cd MyApp/
/var/www/MyApp# cp -p .env.example .env
/var/www/MyApp# php artisan key:generate
続いて、ファイルアップロードの機能用にディレクトリの権限を変更します。
/var/www/MyApp# chmod 766 storage
/var/www/MyApp# chmod 766 bootstrap/cache
workspaceのコンテナの作業は終わりです。 コンテナから出ます。
/var/www# exit
アプリケーションのパスを通す
project/MyApp
にアプリケーションのパスを通します。
docker-compose.yml
volumes:
- - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG}
+ - ${APP_CODE_PATH_HOST}/MyApp:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG}
NginxのルートにMyApp/public
を通します。
laradock/nginx/sites/default.conf
- root /var/www/public;
+ root /var/www/MyApp/public;
コンテナを再起動する。
$ docker-compose restart
http://localhost/を開いてLaravelの画面が出たら完了です。 お疲れ様でした。
参考
公式
記事
Laravelのおすすめ参考書
こちらの書籍でLaravelの全体像が分かりやすいです。 MVCの概念の説明から開発環境の構築、Laravelの基本的な機能について学べます。
- バージョン:Laravel 5.4
- OS:Windows, Mac OS対応
注意:HTML/CSSが解かる人向けです。基本からちょっと外れたこと(既存のDBを使う方法など)は載っていません。