2
1

More than 1 year has passed since last update.

Laradoc×DockerでLaravel環境を構築

Last updated at Posted at 2022-03-18

前提条件

macOS Big Sur -bash
Docker Desktopを公式よりダウンロードしてインストールして立ち上げていること

Laradocをインストール

プロジェクトのワークスペースになるフォルダをどこか適当な場所に作って、ターミナルでそのフォルダのディレクトリへ行って、以下のコマンドでLaradocをインストールする。

$ git clone https://github.com/Laradock/laradock.git

laradocの.envファイルを作成

インストールされてたら、laradocというフォルダが生成されるので、$ cd laradocで移動しておいてから.env.exampleを複製して.envファイルを作る。

laradoc$ cp .env.example .env

.envファイルをテキストエディタで開いて、以下の箇所を変更する。

データベースのデータ保存先を../dataディレクトリに変更。

.env
# Choose storage path on your machine. For all storage systems
 DATA_PATH_HOST=../data

他のプロジェクトでLaradockを使用する可能性もあるので、コンテナ名の重複を防ぐためにプロジェクト名に変更しておく。

.env
# Define the prefix of container names. This is useful if you have multiple projects that use laradock to have separate containers per project.
 COMPOSE_PROJECT_NAME=プロジェクト名

PHPのバージョンを指定。8じゃなくて、ちゃんと8.0と入力しましょう。(これのせいか、エラーが起きました。)

.env
# Select a PHP version of the Workspace and PHP-FPM containers (Does not apply to HHVM).
# Accepted values: 8.0 - 7.4 - 7.3 - 7.2 - 7.1 - 7.0 - 5.6
 PHP_VERSION=8.0

Laradock起動

ターミナルでlaradocディレクトリにいる状態で以下を入力

laradoc$ docker-compose up -d workspace php-fpm nginx mysql phpmyadmin

... doneが出たら完了。

立ち上がったかチェック

ブラウザを起動して、urlを入力する部分にlocalhostと入力してアクセス。

404 Not Found
nginx

とあれば成功!

Laradoc起動でエラーが出た時の対処法

PHPのバージョンでエラー

=> ERROR [internal] load metadata for docker.io/laradock/workspace:latest-8                                                                  4.4s
------
 > [internal] load metadata for docker.io/laradock/workspace:latest-8:
------
failed to solve with frontend dockerfile.v0: failed to create LLB definition: docker.io/laradock/workspace:latest-8: not found
ERROR: Service 'workspace' failed to build : Build failed

.envのPHP_VERSIONの指定を確認。
私はPHP_VERSION=8としてしまったため、このエラーが出ました。.0も大事です。

時間かかりすぎ問題

ERROR: An HTTP request took too long to complete. Retry with --verbose to obtain debug information.
If you encounter this issue regularly because of slow network conditions, consider setting COMPOSE_HTTP_TIMEOUT to a higher value (current value: 60).

$docker-compose up -d workspace php-fpm nginx mysql phpmyadminをした後、異常に時間がかかった時に出ました。

スルーしてもう一度$docker-compose up -d workspace php-fpm nginx mysql phpmyadminをしただけでいけました。

ポート被ってる問題

Creating プロジェクト名_nginx_1      ... error

ERROR: for プロジェクト名_nginx_1  Cannot start service nginx: Ports are not available: listen tcp 0.0.0.0:80: bind: address already in use

ERROR: for nginx  Cannot start service nginx: Ports are not available: listen tcp 0.0.0.0:80: bind: address already in use
ERROR: Encountered errors while bringing up the project.

80番のポートが他の処理で使われている場合に起こるようです。
.envファイルでポートを80以外に変更しましょう。以下の326行目あたりにあるNGINX_HOST_HTTP_PORTの部分を変更してください。私は81も使っていたので82にしました。

.env
NGINX_HOST_HTTP_PORT=82

ポート番号を変更したら、アクセスしてチェックするU暗号RLがlocalhostではなく、localhost:指定したポート番号になるので注意。

ちなみに、ポート番号を使っているか確認する際は以下で確認できる。

$ sudo lsof -i -P | grep ":80"

Laravelのアプリケーションプロジェクトファイルを作成

laradocディレクトリで以下を入力

laradoc$ docker-compose exec workspace bash

なんかroot@bfcbaebbdded:/var/www#みたいなのが出たらコンテナのworkspace内に入ってコマンドが打てるようになった印なので、コンテナ内にlaravelをインストールする。

$ composer create-project laravel/laravel:^8.0 プロジェクトフォルダ名 --prefer-dist

zip形式で落とせるので--prefer-distを末尾につけると高速でダウンロードできる。
ここら辺のコマンドは、公式ドキュメントのcomposerでのインストールの部分に書いてあるのでそちらを参考にどうぞ。

Application key set successfully.と出たら完了。exitと入力してコンテナのworkspaseから抜けて、ターミナルのlaradocディレクトリに戻る。

また.envを開いて、以下の部分を変更して、Laravelアプリケーションの場所を指定。
プロジェクトフォルダ名とは、先ほどcomposer create-projectコマンドで使った名前を使用する。

laradoc/.env
# Point to the path of your applications code on your host
APP_CODE_PATH_HOST=../プロジェクトフォルダ名

Docker再起動

laradockディレクトリでもう一度、以下のコマンドを入力。

laradoc$ docker-compose up -d workspace php-fpm nginx mysql phpmyadmin

...doneが並んでいたら完了。ERROが付いているものがあったら失敗してる。。

ブラウザでlocalhost、ポート番号を80以外に変更した人はlocalhost:ポート番号にアクセスすると、Laravelと、出ていたら成功。

どうしてもうまくいかない時

以下のコマンドで、dockerを止めて、1番最初に作ったプロジェクトのワークスペースになるフォルダごと削除して、PCを再起動して1番最初からやり直してみると意外とうまくいったりします。

$ docker-compose stop

ここまでやったのに…とは思うのですが、色々な開発環境を構築するソフト(MAMPやらLocal by flyfheelやら)色々立ち上げてみたりして並列で作業していると、なんかPCの調子が悪いことってあるんですよね。

2
1
1

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
2
1