STEP2-2.Laravelを導入してみよう
STEP1同様に、STEP2の開発環境もDockerを使って整えることができます。
LaravelのDockerを使った開発環境をLaradockを使って構築してみましょう。
なお、Step1-4ですでにdocker環境を整えていることを前提に説明は進めていきます。
Laravelの開発環境を作成して初期画面を表示しよう
まず作業するディレクトリを作成して、そこに移動しましょう。 projectnameは自分の作業用のプロジェクトの名前にしましょう。
$ mkdir projectname
$ cd projectname
$ git init
作成したディレクトリにlaradockをcloneでDLしましょう。
file_path:/projectname
$ git submodule add https://github.com/Laradock/laradock.git
次にlaradockの設定ファイルを書き換えましょう。 DLしてきたlaradockの階層に移動し、設定ファイルを用意します。
$ cd laradock
$ cp env-example .env
設定ファイル(.env)のAPP_CODE_PATH_HOSTの部分を書き換えます。
- APP_CODE_PATH_HOST=../
+ APP_CODE_PATH_HOST=../src
これで「projectname/src/」の下の階層がアプリケーションのコードを格納するディレクトリとみなされるようになります。
それでは、実際にworkspaceを立ち上げてみましょう。
file_path:/projectname/laradock
$ docker-compose up -d workspace nginx
コンテナの起動状況を確認してみます。
file_path:/projectname/laradock
$ docker-compose ps
Name Command State Ports
---------------------------------------------------------------------------------------------------------------
laradock_docker-in-docker_1 dockerd-entrypoint.sh Up 2375/tcp
laradock_nginx_1 nginx 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
上記のようなコンテナ稼働状態になっていれば、ここまでうまくいっています。
さらに、workspaceコンテナの中にLaravelのアプリケーションを作ります。
file_path:/projectname/laradock
$ docker-compose exec workspace bash
# composer create-project laravel/laravel . --prefer-dist
# exit
うまくいけば「projectname/src/」の下の階層にアプリケーションのコードが生成され、Laravelが動いている状態になります。
初期画面を確認してみましょう。
Windowsであれば「http://192.168.99.100」にアクセス
Macであれば「http://localhost」にアクセス
→うまくいかないようでしたら「http://127.0.0.1」にアクセスしてみてください
「Laravel」のデフォルト画面が表示されるはずです。
DBも使ってみよう
DBはPostgreSQLを利用します。
step1と同様にWindows環境ではDBのデータ永続化をすると起動しない場合があるので、その場合はlaradock階層にある「docker-compose.yml」を以下のように書き換えてください。
file_path:/projectname/laradock/docker-compose.yml
### PostgreSQL ###########################################
postgres:
build: ./postgres
- volumes:
- - ${DATA_PATH_HOST}/postgres:/var/lib/postgresql/data
- - ${POSTGRES_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
+# volumes:
+# - ${DATA_PATH_HOST}/postgres:/var/lib/postgresql/data
+# - ${POSTGRES_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
ports:
- "${POSTGRES_PORT}:5432"
environment:
- POSTGRES_DB=${POSTGRES_DB}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
networks:
- backend
PostgreSQLの起動には以下のようにします
file_path:/projectname/laradock
$ docker-compose up -d postgres
起動後にコンテナ起動状況を確認すると以下のようになるはずです。
file_path:/projectname/laradock
$ docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------------------------------------
laradock_docker-in-docker_1 dockerd-entrypoint.sh Up 2375/tcp
laradock_nginx_1 nginx 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_postgres_1 docker-entrypoint.sh postgres Up 0.0.0.0:5432->5432/tcp
laradock_workspace_1 /sbin/my_init Up 0.0.0.0:2222->22/tcp
laravelからのDB接続設定もしておきましょう。
src配下に生成されている「.env」ファイルを編集します。
file_path:/projectname/src/.env
- DB_CONNECTION=mysql
- DB_HOST=127.0.0.1
- DB_PORT=3306
- DB_DATABASE=homestead
- DB_USERNAME=homestead
- DB_PASSWORD=secret
+ DB_CONNECTION=pgsql
+ DB_HOST=postgres
+ DB_PORT=5432
+ DB_DATABASE=default
+ DB_USERNAME=default
+ DB_PASSWORD=secret
これで、laravelからPostgreSQLへの接続が可能になっています。
workspaceコンテナと実行するコマンドについて
今後の節では、今回立ち上げたworkspaceコンテナ内でコマンドを実行することが何回かあります。
workspaceコンテナは、今回使用するlaravelの実態があるコンテナです。
新しく使用したいPHPのパッケージを追加したり、laravelの開発用コマンドを使う場合には、workspaceコンテナの中でコマンドを実行することになります。
コンテナに入るコマンドは以下のようなコマンドになります。
file_path:/projectname/laradock
$ docker-compose exec workspace bash
コンテナから出るコマンドは次のようになります。
file_path:/var/www#
# exit
workspaceコンテナ内で実行するコマンドはおそらく以下の2種類になります。
composer
PHPのパッケージ管理システムのコマンドです。
Laravelのプロジェクトを作成したり、パッケージを追加したり、削除したりできます。
本節中でも、プロジェクトの作成に使用されています。
php artisan
Laravelのコマンドインターフェイスです。
コントローラやモデルのひな形にできるPHPファイルを自動で作成できたり、データベースマイグレーションの実行などが行えます。
詳しくは公式のイントロダクションをみてみてください。