takaya030の備忘録

PHP、Laravel、Docker などの話がメインです

Laravel Sail インストール時に発生したエラーと解決方法

Laravel 公式サイトで紹介されていた方法で Laravel Sail をインストールしようとしたところ、エラーが発生して処理が中断したのでその解決方法の備忘録

検証環境

Windows10 Home Edition (version 21H2)
VirtualBox 6.1.32
vagrant 2.2.19

# Docker Host OS
ubuntu 20.04.3 LTS (Focal Fossa)

Docker version 20.10.8, build 3967b7d
docker-compose version 1.29.2, build 5becea4c

インストール

発生したエラーについて

下記コマンドでインストールしようとしたところ途中でエラーが発生して中断した

$ curl -s https://laravel.build/example-app | bash

エラーメッセージ

  [ErrorException]
  file_get_contents(/opt/example-app/vendor/symfony/error-handler/Resources/bin/patch-type-declarations): Failed to open stream: No such file or directory

インストールスクリプトの中で laravel new が使われていて、そこでエラーが発生していた

解決方法

composer を使ってインストールすることで解決した

$ docker pull composer
$ docker run --rm -it --volume $PWD:/app composer create-project laravel/laravel example-app
$ cd example-app
$ docker run --rm -it --volume $PWD:/app composer require laravel/sail --dev
$ docker run --rm -it --volume $PWD:/app composer php artisan sail:install --devcontainer

 Which services would you like to install? [mysql]:
  [0] mysql
  [1] pgsql
  [2] mariadb
  [3] redis
  [4] memcached
  [5] meilisearch
  [6] minio
  [7] mailhog
  [8] selenium
 > 0

docker build

発生したエラーについて

インストール完了後、 ./vendor/bin/sail up でコンテナを起動しようとしたところ下記エラーが発生

E: Problem executing scripts APT::Update::Post-Invoke 'rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true'
E: Sub-process returned an error code

Docker イメージのビルド中にエラーが発生していた

解決方法

デフォルトは context./vendor/laravel/sail/runtimes/8.1 が指定されていた
./vendor/laravel/sail/runtimes/8.0 に変更したところ正常にビルドされた

docker-compose.yml を変更

--- a/docker-compose.yml  Sat May 14 18:28:33 2022
+++ b/docker-compose.yml  Sat May 14 16:36:36 2022
@@ -3,11 +3,11 @@
 services:
     laravel.test:
         build:
-            context: ./vendor/laravel/sail/runtimes/8.1
+            context: ./vendor/laravel/sail/runtimes/8.0
             dockerfile: Dockerfile
             args:
                 WWWGROUP: '${WWWGROUP}'
-        image: sail-8.1/app
+        image: sail-8.0/app
         extra_hosts:
             - 'host.docker.internal:host-gateway'
         ports:

sail build で再ビルド

$ ./vendor/bin/sail build --no-cache

動作確認

sail up で起動

$ ./vendor/bin/sail up -d

http://<docker-host-ip>/ を web ブラウザでアクセスして以下の画面が表示されたら成功

参考サイト

laravel.com

zenn.dev

hub.docker.com