教材の内容に関係のない質問や教材とは異なる環境・バージョンで進めている場合のエラーなど、教材に関係しない質問は推奨していないため回答できない場合がございます。
その場合、teratailなどの外部サイトを利用して質問することをおすすめします。教材の誤字脱字や追記・改善の要望は「文章の間違いや改善点の指摘」からお願いします。
このパートでは、Laradockをインストールして、Laravelを動かすための開発環境を作ります。
Laravelを動かす為には、Webサーバーや、多くの場合でデータベースが必要になってきます。
Laradockを使うことで、このWebサーバーやデータベースをDocker上に簡単に構築することができます。
あなたのPCの任意のディレクトリの配下にci-tutorial
ディレクトリを作成してください。
Copied!$ mkdir ci-tutorial
そして、ci-tutorial
ディレクトリに移動してください。
Copied!$ cd ci-tutorial
ci-tutorial
ディレクトリに移動したら、以下のコマンドでlaradockをインストールしてください。
なお、2020年10月ごろからlaradockはエラーが発生するようになったので、本教材では筆者が用意した、laradockを模した環境(laradock-like)を使用します。
Copied!$ git clone https://github.com/shonansurvivors/laradock-like.git laradock
Cloning into 'laradock'...
と、数行のメッセージが表示されると思います。
完了すると、laradock
というディレクトリが作成されます。
Copied!.
└──ci-tutorial
└── laradock
次に、laradockの設定に関わるファイルのひとつである、.env
ファイルを作成します。
laradockは、.env
ファイルの雛形としてenv-example
ファイルを用意してくれているので、これを元に作成することにします。
以下を入力してください。
Copied!$ cd laradock
$ cp env-example .env
なお、.env
のような.
始まりのファイルはMacのFinderなどではデフォルトでは隠しファイル扱いとなり、ファイルが存在していてもファイル一覧などに表示されません。AtomやVSCodeなどのエディタでは表示されますので、そちらで確認してください。
次にエディタ等を使って、.env
ファイルのうち、
の3箇所を以下の通り編集してください。
Copied!.
└──ci-tutorial
└── laradock
└── .env
laradock/.env1234567 Copied!APP_CODE_PATH_HOST=../laravel-ci #========== この行を変更
DATA_PATH_HOST=../data #========== この行を変更
COMPOSE_PROJECT_NAME=laravel-ci #========== この行を変更
# 略
次にDockerを使って開発環境を起動します。
laradock
ディレクトリで以下のコマンドを入力してください。
Copied!$ docker-compose up -d workspace php-fpm nginx postgres
コマンドの意味は以下の通りです。
docker-compose
は、複数のコンテナを同時に取り扱うDocker Composeという機能を使うためのコマンドですup
は、Docker Composeでコンテナを起動するときに使うコマンドです-d
は、コンテナを起動した後に、ターミナルの操作に戻るためのオプションですコマンドを実行すると、大量のメッセージが表示されます。
初回は、各コンテナのソフトウェア本体(Dockerイメージ)をダウンロードしてくるため、コンテナの起動までに数分程度の時間がかかります。
最後に以下のメッセージが表示されたら、コンテナの起動は成功です。
Copied!Creating laravel-ci_workspace_1 ... done
Creating laravel-ci_php-fpm_1 ... done
Creating laravel-ci_nginx_1 ... done
Creating laravel-ci_porstgres_1 ... done
もし、この4つのメッセージが表示されなかったら、以下を試してください。
Error response from daemon: invalid mount config for type "bind": bind source path does not exist
といったメッセージが表示された場合
ci-cutorial
ディレクトリ配下に、空のlaravel
ディレクトリを作り、その上でもう一度laradock
ディレクトリでdocker-compose up -d workspace php-fpm nginx postgres
を実施するそれ以外の場合
laradock
ディレクトリでdocker-compose up -d workspace php-fpm nginx postgres
を実施する以上で、Laradockの導入は完了です。
講座に記載のエラーに遭遇しました。
laravel-sns ディレクトリはlaradock ディレクトリに作れば良いのでしょうか?
laravel-sns ディレクトリはまだ作成していないと思うのですが作成場所が明記されていなかったので質問です。
エラー文
Copied!Error response from daemon: invalid mount config for type "bind": bind source path does not exist: /Users/ryotaro/desktop/program_study/ci-tutorial/laravel-ci
laravel-ci ディレクトリを作成するとうまくいきました。
しかし次の章では、下記コマンドでlaravel-ci ディレクトリを作成しています。
どうすれば良いでしょうか??
Copied!$ git clone -b laravel-ci https://github.com/shonansurvivors/laravel-sns laravel-ci
docker-compose up -d workspace php-fpm nginx postgres
を実行した後に特定の場所で停止してしまう。
Ubuntu 18.04でのエラー再現記事があったのでvagrant上にこちらの環境を作り、試しましたが、全く同じところで止まりました。
Mac OS
Docker version 19.03.12
docker-compose version 1.26.2
こちら、解決方法がございましたらご教示いただけますと幸いに存じます。
#環境はmacです。
#発生している問題
Recreating laravel-ci_nginx_1
だけ、"error"となってしまう。
$ docker-compose up -d workspace php-fpm nginx postgres
を、実行したところ
エラー文には、ERROR: for laravel-ci_nginx_1 UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)
と、あったので、タイムアウトが原因だったのかと思い、
$ COMPOSE_HTTP_TIMEOUT=240 docker-compose up
を打ち込みタイムアウトまでの時間を延長しようと試みたのですが、
Building perconaの行程で再びエラー文
ERROR: Service 'percona' failed to build: error pulling image configuration: unexpected EOF
と、表示されてしまいました。
EOFという概念を知らなかったので、ここでよく分からなくなってしまいました...。
どうやら、laravel-ci_nginx_1 を構築中にエラーが生じてしまっていることは間違い無いです。
そして、ポートは割り振られていません。
どうか、ご教示いただけましたら幸いです。
何卒よろしくお願い致します。
#環境はMacです。
Nginxでエラーが発生して、起動できない。
こちらが、「docker logs 892edbd6d3f6」の結果です。
892edbd6d3f6は、laravel-ci_nginxです。
初回にやった時は起動したのですが、2回目にやったらエラーが出ました。
2020/06/13 06:56:10 [error] 11#11: *2 FastCGI sent in stderr: "PHP message: PHP Warning: require(/var/www/public/../vendor/autoload.php): failed to open stream: No such file or directory in /var/www/public/index.php on line 24PHP message: PHP Fatal error: require(): Failed opening required '/var/www/public/../vendor/autoload.php' (include_path='.:/usr/local/lib/php') in /var/www/public/index.php on line 24" while reading response header from upstream, client: 172.26.0.1, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://172.26.0.5:9000", host: "localhost"
172.26.0.1 - - [13/Jun/2020:06:56:10 +0000] "GET / HTTP/1.1" 500 5 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"