LoginSignup
3
3

More than 3 years have passed since last update.

【環境構築メモ】docker × Laravel 開発環境構築(Laradock使用)

Last updated at Posted at 2020-11-30

はじめに

Laravelでの開発環境を構築する際の手順をまとめました。
今回は、laradockを使ってみたかったので、laradockを使用して環境構築します。

※ laradockとは? http://laradock.io/

  1. Laravel(PHP)のプロジェクトをDocker上で動作させるためのワンダフルな環境
  2. Dockerを用いてlaravelの環境を作るために必要なものがほぼ全てパッケージ化されている
  3. PHP, nginx, MySQLやミドルウェア等、Laravelの実行に必要な環境が整っている。

前提環境

  • Windows 10 Professional
  • PHP7.3
  • Dockerインストール済み
  • gitインストール済み

ゴール

  • Laradockを使用して、Laravelの開発環境を構築する。
  • 開発環境としては、以下のような構成にします。
    • Laravel(Webアプリケーションフレームワーク)
    • mysql(DB)
    • nginx(Webサーバ)

手順

1. プロジェクトディレクトリを作成

  • 任意の場所にプロジェクトディレクトリを作成します。どこでもOK。
    $ mkdir todo-list

2. プロジェクトディレクトリに移動し、laradockをプロジェクトディレクトリ直下にclone

  • Githubからlaradockをcloneしてきます。cloneが終わると、プロジェクトディレクトリ直下に「laradock」というディレクトリが作成されます。
    $ git clone https://github.com/laradock/laradock.git

  • clone直後のプロジェクトディレクトリ階層: laradockディレクトリ下に色々入ってます

3. laradockディレクトリに移動し、「.env」ファイルを作成、編集

  • laradockディレクトリ直下の「env-example」ファイルをリネームして作成する
    • .envファイル = 環境設定ファイル
    • 設定ファイルのサンプルをベースに置き換える為、設定ファイルをコピーしておく。
      $ cd laradock/ $ cp env-example .env

3-1. envファイルの設定

  • .envファイル内の値を編集していきます。

【設定詳細】

I. envファイル内の「APP_CODE_PATH_HOST」の値を変更

  5 ### Paths #################################################
  6
  7 # Point to the path of your applications code on your host
  8 APP_CODE_PATH_HOST=../todo-app
  9

↑上記記述で、「todo-list/todo-app/」下の階層がアプリケーションのコードを格納するディレクトリとみなされるようになる。

  • 2020年11月時点では.envファイルに書いてあるPHPのバージョンは「7.3」でした。

    • PHP_VERSION=7.3
  • mysqlは「その時点の最新版」

    • MYSQL_VERSION=latest

4. docker-composeでコンテナを立ち上げる:nginx と mysqlを立ち上げ

  • laradockディレクトリに移動し、コマンドを実行。コンテナを起動します。
    $ docker-compose up -d nginx mysql
    ※初回起動は時間がかなり!!かかります。気長に待ちましょう。10分以上は間違いなくかかる!

  • docker-compose up でエラーが出たら、下記参考URLの内容を参照ください。
    https://qiita.com/blueray777/items/44e25dc04ed1ab5c4cc8

    ・Laradockのdocker-compose upで出会ったエラー達

  • コンテナの確認

$ docker-compose ps -a
           Name                          Command               State                                                                      Ports
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
laradock_docker-in-docker_1   dockerd-entrypoint.sh            Up      2375/tcp, 2376/tcp
laradock_mysql_1              docker-entrypoint.sh mysqld      Up      0.0.0.0:3306->3306/tcp, 33060/tcp
laradock_nginx_1              /docker-entrypoint.sh /bin ...   Up      0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp, 0.0.0.0:81->81/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, 0.0.0.0:3000->3000/tcp, 0.0.0.0:3001->3001/tcp, 0.0.0.0:4200->4200/tcp, 0.0.0.0:8001->8000/tcp, 0.0.0.0:8080->8080/tcp

5. Laravelプロジェクトの作成

  • コンテナ起動後は、コンテナ内に入ってLaravelプロジェクトを生成します。
    laradockはworkspaceという全ての操作が可能なコンテナが用意されるので、ここから操作していきます。

  • コンテナ内に入る(laradockユーザー/rootユーザー)
    $ winpty docker-compose exec --user=laradock workspace bash
    $ winpty docker-compose exec --user=root workspace bash

  • Laradockに入れた時の表示
    laradock@fb36cc3540cd:/var/www$

  • Laravelプロジェクトのダウンロード

    • コンテナに入ったら/var/www配下にいますので、composerを使用してプロジェクトを生成します。
      laradock@fb36cc3540cd:/var/www$ composer create-project laravel/laravel todo-app ※ダウンロードに時間かかる

6. プロジェクトの生成確認

  • http://localhost/ にブランチからアクセス確認

    • Laravelのデフォルト画面が出ることを確認
  • 404 Not Foundが表示された場合

    • 3-1. envファイルの設定 で、.envファイルの「APP_CODE_PATH_HOST」のみ変更しましたが、「APP_CODE_PATH_CONTAINER」のパスも変更する必要がありました。(共有ディレクトリのマウント設定)
  5 ### Paths #################################################
  6
  7 # Point to the path of your applications code on your host
  8 APP_CODE_PATH_HOST=../todo-app
  9
 10 # Point to where the `APP_CODE_PATH_HOST` should be in the container
 11 APP_CODE_PATH_CONTAINER=/var/www/todo-app
  • nginxのroot変更
    • nginxの設定を変更します。ドキュメントルートを変更(13行目:root 以下のパスを変更)
$ vi nginx/sites/default.conf

  1 server {
  2
  3     listen 80 default_server;
  4     listen [::]:80 default_server ipv6only=on;
  5
  6     # For https
  7     # listen 443 ssl default_server;
  8     # listen [::]:443 ssl default_server ipv6only=on;
  9     # ssl_certificate /etc/nginx/ssl/default.crt;
 10     # ssl_certificate_key /etc/nginx/ssl/default.key;
 11
 12     server_name localhost;
 13     root /var/www/todo-app/public;
 14     index index.php index.html index.htm;
  • envファイル変更後は、コンテナを再起動してください。
    $ docker-compose stop $ docker-compose up -d nginx mysql

まとめ

  • ここまでで、laradock環境で構築したLaravelの初期画面表示ができるようになりました。 プロジェクトディレクトリの階層はこんな感じです。
  todo-list/
      | todo-app/
      └ laradock/

todo-appディレクトリ配下には、Laravelの各種ソースが格納されています。
dockerの知識や、Nginx等のインフラ知識がなくても、ここまではすんなりとこれるのではないかと思います。次の記事では、今回構築したLaravel開発環境をベースに、簡単なWebアプリケーションを構築して実行してみたいと思います。

次回!

  • DB設定
  • テーブルを作成、データ投入→ DBのデータを画面(ビュー)で一覧表示させてみる。

参考にしたサイト

Laravelで簡単なページを作成するまで https://qiita.com/tasogarei/items/1e0a3577a9fae7e519ba

3
3
0

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
3
3