0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Laravelの既存プロジェクトにSailを導入する方法

Posted at

背景

現在の開発環境の都合上、Laravel 9を想定しています。

公式には

composer require laravel/sail --dev
php artisan sail:install
./vendor/bin/sail up
php artisan sail:add

としなさいと書いてあるが、そもそもローカルにcomposerやphpがない環境の中にSailで仮想環境を作ろうとしているのにcomposerやphpがローカルで動くことを前提にするというのはどうよと。

公式には

docker run --rm \
    -u "$(id -u):$(id -g)" \
    -v "$(pwd):/var/www/html" \
    -w /var/www/html \
    laravelsail/php82-composer:latest \
    composer install --ignore-platform-reqs

とすることでcomposerなしでSailを導入できると書いてあったが、色々壁にぶつかったのでここにメモ。

手順

まずはgit pullで既存のプロジェクトフォルダに移動して

とりあえず公式の手順通りにする

docker run --rm \
    -u "$(id -u):$(id -g)" \
    -v "$(pwd):/var/www/html" \
    -w /var/www/html \
    laravelsail/php82-composer:latest \
    composer install --ignore-platform-reqs

これでsail upをすると

./vendor/bin/sail up
no configuration file provided: not found
no configuration file provided: not found

となる。docker-compose.ymlがない(そもそもこの時点でSailがインストールされていない)かららしい。なので、docker経由でSailをインストールする。

docker run --rm \
    -u "$(id -u):$(id -g)" \
    -v "$(pwd):/var/www/html" \
    -w /var/www/html \
    laravelsail/php80-composer:latest \
    composer require laravel/sail --dev

そうすると以下のようなエラーが出た。

Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - spatie/image 2.2.7 requires ext-exif * -> it is missing from your system. Install or enable PHP's exif extension.
    - spatie/crawler 7.1.3 requires spatie/browsershot ^3.45 -> satisfiable by spatie/browsershot[3.61.0].
    - spatie/laravel-sitemap 6.4.0 requires spatie/crawler ^7.0 -> satisfiable by spatie/crawler[7.1.3].
    - spatie/browsershot 3.61.0 requires spatie/image ^1.5.3|^2.0 -> satisfiable by spatie/image[2.2.7].
    - spatie/laravel-sitemap is locked to version 6.4.0 and an update of this package was not requested.

To enable extensions, verify that they are enabled in your .ini files:
    - /usr/local/etc/php/conf.d/docker-php-ext-bcmath.ini
    - /usr/local/etc/php/conf.d/docker-php-ext-pcntl.ini
    - /usr/local/etc/php/conf.d/docker-php-ext-sodium.ini
    - /usr/local/etc/php/conf.d/docker-php-ext-zip.ini
You can also run `php --ini` in a terminal to see which files are used by PHP in CLI mode.
Alternatively, you can run Composer with `--ignore-platform-req=ext-exif` to temporarily ignore these required extensions.
You can also try re-running composer require with an explicit version constraint, e.g. "composer require laravel/sail:*" to figure out if any version is installable, or "composer require laravel/sail:^2.1" if you know which you need.

Installation failed, reverting ./composer.json and ./composer.lock to their original content.

自分のプロジェクトではexifは使っていないから、ひとまず--ignore-platform-req=ext-exifとしておく。

 docker run --rm \
    -u "$(id -u):$(id -g)" \
    -v "$(pwd):/var/www/html" \
    -w /var/www/html \
    laravelsail/php80-composer:latest \
    composer require laravel/sail --dev --ignore-platform-req=ext-exif

--ignore-platform-req=ext-exifをつけるとエラーなく進んだ。

.envがないのでコピーしておく。

cp .env.example .env

そしてSailをインストール。

docker run --rm \
    -u "$(id -u):$(id -g)" \
    -v "$(pwd):/var/www/html" \
    -w /var/www/html \
    laravelsail/php80-composer:latest \
    php artisan sail:install

これでsail upすると無事起動したが、localhostにアクセスするとkey:generateするように求められたので、ターミナルをもう一つ立ち上げて、

sail artisan key:generate

とした。そしてlocalhostを見に行くと今度はviteが動いてないと言われたので動かそうとしたら

sail npm run dev

> dev
> vite

sh: 1: vite: not found

viteそのものが入ってなかった。

sail npm install

としたら無事Laravelのトップページが表示された。

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?