はじめに
この記事では、Laradock
で開発環境をセットアップするにあたり最低限知っておいてほしいことを共有します。
▼注意
- あくまでも筆者の経験則からなるものです。
- 将来
Laradock
のバージョンアップにより対応しない内容もあるかもしれません。
Laradockとは
Laravel
向けのdocker-compose
プロジェクトです。
様々なミドルウェア類が用意されており、昨今のモダンなWEBアプリケーション開発に必要なものが全て詰まっていると言っても過言ではありません。
Laradockでの開発を行うにあたり公式のドキュメントが一番情報が多いです。
→ Laradock公式ページはこちら
Laradockを取得する
Laradock
はGitHubをGitリポジトリとして利用しております。
公式ページの「Quick Overview」に以下のようにある通り、基本的にはmasterブランチを取得すると良いでしょう。
1 - Clone Laradock inside your PHP project:
--------------------------------------------------
git clone https://github.com/Laradock/laradock.git
--------------------------------------------------
1.Laradockの設定ファイルをコピーする
取得したLaradock
のルートディレクトリには、env-example
というファイルがあります。
Laradockではこのファイルを元に.env
というファイルを同じディレクトリに作成する必要があります。
つまり以下のコマンド相当の操作を行います。
$ cp env-example .env
2.【注意】すぐにdocker-compose up -d nginx mysql
を実行してはいけない
公式ページでは以下のコマンドを実行すればコンテナが動くとありますが実行しないように注意しましょう。
$ docker-compose up -d nginx mysql
この例のコマンドによってmysql
コンテナが動くことになります。
このmysql
コンテナのデフォルト設定が曲者で、2020/03/05現在においてデフォルトの指定バージョンがlatest
ということでMySQL8がインストールされます。
MySQL8はデフォルトの認証方式がcaching_sha2_password
に代わっておりますので以下のどちらかの方法を選択してください。
- MySQL8の認証方式を
mysql_native_password
に変更する - MySQL5.7を利用する
認証方式を変更する場合は以下の優秀な記事が参考になります。
MySQL8.0に変えたら起こるアレ(@HorikawaTokiya殿の記事)
設定するファイルについては後述します。
3.作成した.envファイルを編集する
手順1で作成した.env
ファイルを各々の環境向けに設定します。
▼ホストとDockerで共有するフォルダの設定
# Point to the path of your applications code on your host
APP_CODE_PATH_HOST=../src
# Point to where the `APP_CODE_PATH_HOST` should be in the container
APP_CODE_PATH_CONTAINER=/var/www
APP_CODE_PATH_HOST
環境変数にホストマシン側のディレクトリを指定します。
この例ではLaradock
プロジェクト内のsrc
ディレクトリを共有します。
(APP_CODE_PATH_HOST
で指定したディレクトリが存在しない場合は作成されます。)
APP_CODE_PATH_CONTAINER
環境変数はデフォルト(/var/www
)のままで良いでしょう。
Laradock
のnginx
コンテナは/var/www
を前提作られておりますが、必要があれば編集してください。
▼ホスト側でのミドルウェア類のデータ置き場設定
MySQLやRedisなど、永続化するデータはコンテナ内にはおけません。
デフォルトでは~/.laradock/data
と設定されておりますが、将来別のLaradock
をセットアップすることもありますので置き場は変えましょう。
今回は.test_app
という名前で保存先を作成します。
# Choose storage path on your machine. For all storage systems
DATA_PATH_HOST=~/.test_app/data
▼作成されるdocker-composeにプロジェクト名をつける
Laradock
で動作させるコンテナには、デフォルトでlaradock_
というプレフィックスが付きます。
複数のLaradock
を利用することを想定し、プレフィックスを別名で用意します。
今回はtest_app
という名前で保存先を作成します。
# Define the prefix of container names. This is useful if you have multiple projects that use laradock to have seperate containers per project.
COMPOSE_PROJECT_NAME=test_app
▼PHPのバージョンを指定する
表題の通りです。
以下の場所に利用したいPHPのバージョンを指定してください。
### PHP Version ###########################################
# Select a PHP version of the Workspace and PHP-FPM containers (Does not apply to HHVM).
# Accepted values: 7.4 - 7.3 - 7.2 - 7.1 - 7.0 - 5.6
PHP_VERSION=7.4
▼利用する各コンテナ毎の設定を確認しよう
Laradock
には様々なコンテナを動作させる設定が存在します。
よく利用するworkspace
php-fpm
mysql
コンテナを例に確認します。
なお、MySQLのバージョンを5.7にする場合はこのファイルで設定します。
デフォルトの認証方式を変更する場合は以下のどちらかの方法で設定します。
-
MYSQL_ENTRYPOINT_INITDB
環境変数のディレクトリに設定内容のSQLファイルを置く - Laradock内の
mysql/my.cnf
に設定を追加する
### WORKSPACE #############################################
# …
# 省略
# …
WORKSPACE_INSTALL_XDEBUG=false # xdebugを利用する場合はtrue
# …
# 省略
# …
### PHP_FPM ###############################################
# …
# 省略
# …
PHP_FPM_INSTALL_XDEBUG=false # xdebugを利用する場合はtrue
# …
# 省略
# …
### NGINX #################################################
NGINX_HOST_HTTP_PORT=80 # httpの場合のポート番号(デフォルトはウェルノウンポートが設定済み)
NGINX_HOST_HTTPS_PORT=443 # httpsの場合のポート番号(デフォルトはウェルノウンポートが設定済み)
# …
# 省略
# …
### MYSQL #################################################
MYSQL_VERSION=5.7 # 動かすMySQLのバージョン番号を指定すること
MYSQL_DATABASE=default # イメージ作成時に作成されるデータベース名
MYSQL_USER=default # デフォルトで作成されるユーザ名
MYSQL_PASSWORD=secret # デフォルトで作成されるユーザのパスワード
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=root # rootのパスワード
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d # コンテナ初回作成時に動かしたいSQLファイルの置き場
# …
# 省略
# …
4.【Docker Toolboxで動かす場合】docker-compose.ymlファイルを編集する
Docker Toolboxでmysql
サービスを動かす場合、docker-compose.yml
ファイルを編集する必要があります。
command: --innodb-use-native-aio=0
という1行を追加しましょう。
### MySQL ################################################
mysql:
build:
context: ./mysql
args:
- MYSQL_VERSION=${MYSQL_VERSION}
environment:
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- TZ=${WORKSPACE_TIMEZONE}
volumes:
- ${DATA_PATH_HOST}/mysql:/var/lib/mysql
- ${MYSQL_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
# Docker Toolboxを使う場合は以下1行を追加する
command: --innodb-use-native-aio=0
ports:
- "${MYSQL_PORT}:3306"
networks:
- backend
4.ようやくLaradockを動かす
Laradock
の設定お疲れ様でした。
これでLaradock
を安全に動かすことができるようになります。
必要なサービスを指定して起動させましょう。
$ cd Laradockのディレクトリ
$ docker-compose up -d nginx mysql