Help us understand the problem. What is going on with this article?

【初心者】LaradockでLaravelの開発環境を簡単構築

LaradockでLaravelアプリの開発環境を構築する際に、何度かのつまづきがありましたが、色々な参考サイトの情報をつなぎ合わせ、何とか解決に至りました。その備忘録です。
(特にphpmyadminからmysqlへの接続でコケたことが記事化の要因でした)


※本記事では、Laradock内の workspace nginx mysql phpmyadminのみの使用について記載しています。

リスペクトな記事

この記事を作成するにあたり、参考にした記事です。

前提条件

下記がインストールされている

  • docker

  • docker-compose

  • git

GitからLaradockをクローン

1)任意のディレクトリを作成(例:project) && 作成したディレクトリへ移動

$ mkdir project && cd project

2)上記ディレクトリへLaradockをGitクローン

project
$ git clone https://github.com/LaraDock/laradock.git

3)laradockへ移動 && .envファイルの作成

$ cd laradock && cp env-example .env

(補足)Gitクローンで上記ディレクトリproject内にlaradockディレクトリが生成されます。
.envは後に触りますので、所在を確認しておいてください。

今はこんな構成のはず
project /
 ┗laradock /
   ┗.env

(補足:はじめてLaradockを入れる場合は、この補足を無視してOK)
もし既にLaradockを導入している場合は(これから2つ目以上のLaradockを導入しようとしている場合は)、この時点でlaradock/.envCOMPOSE_PROJECT_NAME(コンテナ名)を編集した方がいいかもしれません。詳しくはコチラ

workspaceコンテナの起動とlaravelプロジェクトの作成

4)laradockディレクトリでworkspaceコンテナの起動
〜〜少し時間がかかります〜〜

laradock
$ docker-compose up -d workspace

5)workspaceコンテナが起動したら、コンテナへ入る
(11/7追記)※--user=laradockを忘れないように注意
もしDo not run Composer as root/super user!のアラートが出たらコチラ

laradock
$ docker-compose exec --user=laradock workspace bash

6)workspaceコンテナ内でlaravelプロジェクトを作成
(プロジェクト名は任意。例:sampleapp)

workspace
$ composer create-project laravel/laravel sampleapp

〜〜少し時間がかかります〜〜

7)終わったら、コンテナから出る

workspace
$ exit

8)一旦、コンテナを停止

laradock
$ docker-compose stop

この時点でprojectディレクトリ内にsampleappディレクトリが生成されています。また、laradocksampleappに、それぞれ.envファイルがあるので所在を確認。

今はこんな構成のはず
project /
 ┣laradock /
 ┃ ┗.env
 ┗sampleapp /
   ┗.env

.envファイルの変更

laradock.envファイルの変更

9)laradockディレクトリにある.envファイル内の一部を変更します。
まずは、ホストパス APP_CODE_PATH_HOST../から../sampleappへ変更。

laradock/.env
# APP_CODE_PATH_HOST=../
# my change ↓↓↓
APP_CODE_PATH_HOST=../sampleapp

10)データベースなどの保存先 DATA_PATH_HOST~/.laradock/dataから.laradock/dataへ変更(デフォルトではホームディレクトリ上に保存されるが、それをプロジェクトディレクトリのlaradock下へ変更)

laradock/.env
# DATA_PATH_HOST=~/.laradock/data
# my change ↓↓↓
DATA_PATH_HOST=.laradock/data

11)重要!次にmysqlのバージョンMYSQL_VERSION5.7に下げます。
latestのままだと、2019年10月時点では8.0がインストールされ、不都合があるらしい)
(バージョンを下げたことで、うまく行かない場合はコチラ

laradock/.env
# MYSQL_VERSION=latest
# my change ↓↓↓
MYSQL_VERSION=5.7

.envファイルを保存して閉じてください。

sampleapp.envファイルの変更

※ココから変更するのはsampleappディレクトリの方の.envファイルですので注意!(.envファイルはlaradockディレクトリとsampleappディレクトリの両方に存在して、ややこしいですがご注意ください)

12)アプリケーションの名前 APP_NAME を任意のものに変更(例:SampleApp)

sampleapp/.env
# APP_NAME=Laravel
# my change ↓↓↓
APP_NAME=SampleApp

13)laradock.envにあるmysqlの情報を参照しながら、
sampleapp.envにあるmysqlの情報を変更します。

(参照)laradock/.env
MYSQL_DATABASE=default
MYSQL_USER=default
MYSQL_PASSWORD=secret
MYSQL_PORT=3306
(変更)sampleapp/.env
# DB_CONNECTION=mysql
# DB_HOST=127.0.0.1
# DB_PORT=3306
# DB_DATABASE=laravel
# DB_USERNAME=root
# DB_PASSWORD=
# my change ↓↓↓
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=default
DB_USERNAME=default
DB_PASSWORD=secret

.envファイルを保存して閉じてください。

コンテナの立ち上げ → ブラウザでの確認

14)laradockディレクトリから各コンテナを立ち上げます。

laradock
$ docker-compose up -d workspace nginx mysql phpmyadmin

〜〜多少、時間がかかります〜〜

15)コンテナの立ち上がりを確認(とくにmysqlもちゃんと立ち上がっているか)

laradock
$ docker ps                                                                             
CONTAINER ID        IMAGE                 COMMAND                  CREATED              STATUS              PORTS                                      NAMES
a501918bd6d5        laradock_nginx        "/bin/bash /opt/star…"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   laradock_nginx_1
b3f1661bc327        laradock_php-fpm      "docker-php-entrypoi…"   About a minute ago   Up About a minute   9000/tcp                                   laradock_php-fpm_1
9b59af74dc9c        laradock_phpmyadmin   "/docker-entrypoint.…"   About a minute ago   Up About a minute   0.0.0.0:8080->80/tcp                       laradock_phpmyadmin_1
106b6d2851c0        laradock_workspace    "/sbin/my_init"          About a minute ago   Up About a minute   0.0.0.0:2222->22/tcp                       laradock_workspace_1
b50a3cc6b88a        laradock_mysql        "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:3306->3306/tcp, 33060/tcp          laradock_mysql_1
d6e837f0f469        docker:dind           "dockerd-entrypoint.…"   About a minute ago   Up About a minute   2375-2376/tcp                              laradock_docker-in-docker_1

16)では、ブラウザからhttp://localhost/へアクセスを確認

image.png

sampleappディレクトリをいじってみる

試しにsampleappディレクトリをいじって、表示が変更できるかを確認。
Laravelヤッホーに変えて見ます。

17)sampleapp/resources/views/welcome.blade.phpをエディタで開き編集

sampleapp/resources/views/welcome.blade.php
<div class="title m-b-md">
  Laravel
</div>
    ↓↓↓
<div class="title m-b-md">
  ヤッホー
</div>

18)保存して、ブラウザをリフレッシュして、変更を確認

image.png

データベースmysqlへphpmyadminでアクセス

19)ブラウザでhttp://localhost:8080/へアクセス

image.png

20)ログインできるかを確認
ログイン情報は上記で設定した内容を参照

sampleapp/.env
DB_HOST=mysql
DB_USERNAME=default
DB_PASSWORD=secret

Screenshot from 2019-10-13 10-49-13.png

工程は以上です。

うまくいかなかった場合

一度、すべてのコンテナ、イメージ、ボリューム、ネットワークを削除して、やり直すことを提案します。

しかし、この方法で削除すると、本当に全部が消えるので、他のプロジェクトに関わるコンテナやイメージがある場合は、個々に削除してください。

全てのコンテナの停止

$ docker stop $(docker ps -q)

コンテナの一括削除

$ docker system prune

イメージ一括削除

$ docker rmi `docker images -q`
$ docker rmi `docker images -f "dangling=true" -q`

ボリュームの一括削除

$ docker volume prune

ネットワークの一括削除

$ docker network prune

別のプロジェクト(別のコンテナ名)で立ち上げる場合

どうぞ、こちらもご覧ください。

補足

(番外編)sampleappの所有者の変更


(11/7追記)
※下記に記載しているアラートの解決方法がわかりました。
※上記工程(5)で workspaceコンテナへ入るときに、--user=laradockを付けていないと、下記のアラートが表示されます。ちゃんとつけていたら「所有者の変更」はしなくて良いです。この補足事項は無視してOKです。

私の場合、laravelプロジェクトを作成した際に下記が表示された
Do not run Composer as root/super user! See https://getcomposer.org/root for details

image.png

そして、生成されたディレクトリsampleappは所有者がrootになっており、私が書き込みできなくなっていました。(この後にsampleapp内の.envファイルを変更しますが、書き込みができず進めませんでした)

project
$ ls -l
drwxr-xr-x 69 user user  4096 10月 13 08:29 laradock
drwxr-xr-x 12 root root 4096 10月 13 08:32 sampleapp

そこで、sampleappの所有者の変更をしました(所有者をrootからuserへ変更)。

project
$ sudo chown -R user sampleapp
[sudo] user のパスワード:

所有者を変更したことで、以降は問題なく進めることができました。

project
$ ls -l
drwxr-xr-x 69 user user  4096 10月 13 08:29 laradock
drwxr-xr-x 12 user root 4096 10月 13 08:32 sampleapp

(番外編)~/.laradock/data/mysqlの削除


(11/7追記)
※データベースなどの保存先 DATA_PATH_HOST~/.laradock/dataから.laradock/dataへ変更している場合は、この補足事項は無視してOKです。

上記でmysqlのバージョンを下げましたが、これにともない、ホームディレクトリ下にある.laradock/data/mysqlを削除した方が良いらしい。

$ sudo rm -rf ~/.laradock/data/mysql
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした