ノーバグノーライフ

細々と記事書いていきます!!

docker(laradock)×laravelで開発環境構築を行う方法

docker(laradock)×laravelで開発環境構築を行う方法見出し
普段dockerを使っているんですが、laradockがとても便利だったの、
laradockを利用したlaravel環境構築手順を記載します。

目次

この記事のゴール

laradockを利用しnginx、mysql、workspaceのコンテナを立ち上げ、
画面が表示できる状態。

ディレクトリ構成

.
├── app
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── laradock
├── my.cnf
├── package.json
├── phpunit.xml
├── public
├── readme.md
├── resources
├── routes
├── server.php
├── storage
├── tests
├── vendor
└── webpack.mix.js

前提条件

以下の3つをインストールしている状態

  • docker
  • docker-compose
  • git

laradockをクローンする

laradockをサブモジュールとしてクローンします。
そのため、先に開発用リポジトリを作成します。

$ mkdir sample
$ cd sample
$ git init
$ git submodule add https://github.com/laradock/laradock.git

laradockを立ち上げる

laradockの.envファイルをローカル用に編集し、開発リポジトリに入れておきます。

$ cp laradock/env-example .env.laradock.local
$ vi .env.laradock.local
# .env.laradock.local
# 永続化データディレクトリ
DATA_PATH_HOST=../.data
# プロジェクト名ここはご自由にどうぞ
COMPOSE_PROJECT_NAME=sample

# NGINXのポートを変更
NGINX_HOST_HTTP_PORT=8081

# mysqlnの情報ここもご自由にどうぞ
MYSQL_DATABASE=default
MYSQL_USER=default
MYSQL_PASSWORD=secret
MYSQL_PORT=3307

mysql8からパスワードの認証方式がデフォルトでcaching_sha2_passwordに変更されました。
phpではまだ未対応なので、認証方式をmysql_native_passwordに戻す設定も開発リポジトリに入れます。

$ cp laradock/mysql/my.cnf my.cnf
$ vi my.cnf
[mysqld]
sql-mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
character-set-server=utf8
default-authentication-plugin = mysql_native_password # [mysqld]の一番下の行に追加

ここまで終えたら今まで作ったファイルなどをlaradockディレクトリに移動してdockerを立ち上げてみます。
全てステータスがupの状態になったら完了です。

$ cp .env.laradock.local laradock/.env
$ cp my.cnf laradock/mysql/my.cnf
$ cd laradock/
$ docker-compose up -d --build nginx mysql workspace
$ docker-compose ps
          Name                         Command              State                     Ports
--------------------------------------------------------------------------------------------------------------
sample_docker-in-docker_1   dockerd-entrypoint.sh           Up      2375/tcp
sample_mysql_1              docker-entrypoint.sh mysqld     Up      0.0.0.0:3307->3306/tcp, 33060/tcp
sample_nginx_1              /bin/bash /opt/startup.sh       Up      0.0.0.0:443->443/tcp, 0.0.0.0:8081->80/tcp
sample_php-fpm_1            docker-php-entrypoint php-fpm   Up      9000/tcp
sample_workspace_1          /sbin/my_init                   Up      0.0.0.0:2222->22/tcp

laravelをインストールする

composerを利用してlaravelをインストールします。
laravelをインストールするディレクトリは空でないといけないので、
一度別のディレクトリに落として全てのモジュールをアプリのルートディレクトリに移動していきます。

$ docker-compose exec workspace composer create-project "laravel/laravel=5.7.*" sampleproject
$ cd ../
$ shopt -s dotglob
$ mv sampleproject/* ./
$ rm -d sampleproject/

これでlaravelもインストール完了です。

dockerとlaravelの動作確認

以下のURLにアクセスし画面が表示されるか確認

http://localhost:8081/

表示されれば完了です。 コミットする準備を行なっていきます。

.gitignoreの編集とコミット

.env.laradock.localで指定したmysqlの永続化データを保存するディレクトリを作成し、.gitignorenに追加します。

$ touch .data/.gitkeep
$ vi .gitignore
# 追加
.data/*
!.data/.gitkeep

ここまで終えたらコミットしましょう。

$ git add .
$ git commit -m "first commit"
$ git remote add origin https://{ユーザ名}@github.com/{ユーザ名}/リポジトリ名.git
$ git push -u origin master

dockerとlaravelの最終動作確認

先ほど作成したリポジトリをgitからクローンしdockerが立ち上がるか確認します。

$ git clone --recursive リポジトリのURL
$ cd クローンされたディレクトリ/
$ cp .env.example .env
$ cp .env.laradock.local laradock/.env
$ cp my.cnf laradock/mysql/my.cnf
$ cd laradock/
$ docker-compose up -d --build nginx mysql workspace
$ docker-compose exec workspace composer install

以下にアクセスして画面が表示されれば環境構築完了となります。

http://localhost:8081/

以上、良いdocker(laradock)×laravelライフを!