前提条件
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ディレクトリに変更。
# Choose storage path on your machine. For all storage systems
DATA_PATH_HOST=../data
他のプロジェクトでLaradockを使用する可能性もあるので、コンテナ名の重複を防ぐためにプロジェクト名に変更しておく。
# 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と入力しましょう。(これのせいか、エラーが起きました。)
# 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にしました。
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
コマンドで使った名前を使用する。
# 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の調子が悪いことってあるんですよね。