/msresearch

Dockerを使った開発環境の用意。nginx, MySQL, php-fpm使ってます。

Primary LanguagePHP

Laravel開発環境@Docker

概要

LaraDockを使う方法がありましたが、少々大きすぎるので必要最小限のものを自分で用意したくで作ってみました。
今後、このリポジトリをgit cloneすれば手軽にLaravelアプリ開発コンテナが用意できる。(Dockerfile使えばもっと自動化できる)

Docker環境

  • Docker-Desctop 2.0.0.2
  • docker-compose 1.23.2

構築環境

  • php:7.2.12-fpm
  • nginx:1.15.6
  • mysql:5.7

参考

手順

Git cloneと環境変数の変更

$ git clone https://github.com/rinonkia/Docker-Laravel.git sample_app

sample_appを任意の名前にする。

//.env_db

MYSQL_RANDOM_ROOT_PASSWORD=yes

MYSQL_DATABASE=sample
MYSQL_USER=user
MYSQL_PASSWORD=password

MySQLの環境変数は任意で変更する。
.gitignoreも任意で変更。

Docker compose -イメージビルド-

docker-composer.ymlファイル内のapp: buildを元にdocker/php/Dockerfileの内容を実行。

$ cd sample_app
$ docker-compose build

docker imagesで確認。

$ docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
sample_app          latest              d5f4615b1d01        38 seconds ago      469MB
php                 7.2.12-fpm          9d11d506e313        2 months ago        367MB

7.2.12-fpmimageを元にsample_appimageが作成されている。

Docker compose -コンテナ起動-

docker-compose.ymlファイルのimageを元にMySQLとNginxのイメージをpullしてくる。それを元にしてコンテナ起動。

$ docker-compose up -d

以下の内容が出たら成功。

Creating sample_mysql_1 ... done
Creating sample_app_1   ... done
Creating sample_web_1   ... done

しっかりと動いているか確認する。

$ docker-compose ps
     Name                   Command              State                 Ports
------------------------------------------------------------------------------------------
sample_app_1     docker-php-entrypoint php-fpm   Up      9000/tcp
sample_mysql_1   docker-entrypoint.sh mysqld     Up      0.0.0.0:3306->3306/tcp, 33060/tcp
sample_web_1     nginx -g daemon off;            Up      0.0.0.0:8000->80/tcp

http://localhost:8000/にアクセスし、403 Forbidden nginx/1.15.6と出ていたら成功。

上手くいかない場合はdocker-compose logsでログを確認。

Laravelインストール

コンテナにbashログインする。

$ docker-compose exec app bash
# composer create-project --prefer-dist laravel/laravel sample_app "5.5.*"

以下の警告が出るが気にしない。

do not run Composer as root/super user! See https://getcomposer.org/root for details

docker/web/default.confの変更。

root  /var/www/html/sample_app/public;

sample/.envファイルのDB環境変数を変更。

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=sample
DB_USERNAME=user
DB_PASSWORD=password

コンテナ内から退却し再起動。

$ docker-compose restart

http://localhost:8000/にアクセスし、Laravelが表示されたらOK。

マイグレーション

またもやコンテナにbashログイン。

$ docker-compose exec app bash
# cd sample_app
# php artisan migrate

マイグレーションできれば成功。

感想

さらに応用していきたいと思います。コンテナ内にLaravelプロジェクトをgit cloneして、過去に作ったアプリを動かしたい。 Dockerfileが使いこなせるようになったら、もっと自動化できます。nginxのファイルも理解していきたい。