LoginSignup
6
2

More than 3 years have passed since last update.

Laradockのセットアップで行うべきこと

Last updated at Posted at 2020-03-05

はじめに

この記事では、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というファイルを同じディレクトリに作成する必要があります。

つまり以下のコマンド相当の操作を行います。

env-exampleをコピーして.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で共有するフォルダの設定

.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)のままで良いでしょう。
Laradocknginxコンテナは/var/wwwを前提作られておりますが、必要があれば編集してください。


▼ホスト側でのミドルウェア類のデータ置き場設定

MySQLやRedisなど、永続化するデータはコンテナ内にはおけません。

デフォルトでは~/.laradock/dataと設定されておりますが、将来別のLaradockをセットアップすることもありますので置き場は変えましょう。
今回は.test_appという名前で保存先を作成します。

.env(永続化データの保存先設定)
# Choose storage path on your machine. For all storage systems
DATA_PATH_HOST=~/.test_app/data

▼作成されるdocker-composeにプロジェクト名をつける

Laradockで動作させるコンテナには、デフォルトでlaradock_というプレフィックスが付きます。
複数のLaradockを利用することを想定し、プレフィックスを別名で用意します。
今回はtest_appという名前で保存先を作成します。

.env(docker-composeで動作するコンテナ名のプレフィックスを変更)
# 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のバージョンを指定してください。

.env(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に設定を追加する
.env(各コンテナの設定)
### 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行を追加しましょう。

docker-compose.yml
### 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
6
2
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2