5
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?

More than 1 year has passed since last update.

Laravel アプリにlaravel/sail を導入

Last updated at Posted at 2022-01-07

はじめに

昔作ったアプリの開発環境がdocker環境になっていなかったのでそれをsail使って実現したことを備忘録として残します。

導入

の前に

sailを利用するにはlaravel, php ともにバージョン7.4以上必要との認識ですので、

PHPのバージョンを7.2 → 7.4

Laravelのバージョンを7.0 → 7.4

composer.json
{
    "name": "laravel/laravel",
    "type": "project",
    "description": "The Laravel Framework.",
    "keywords": [
        "framework",
        "laravel"
    ],
    "license": "MIT",
    "require": {
//        "php": "^7.2",
        "php": ">=7.4", ここ変更
        省略
//        "laravel/framework": "^7.0",
        "laravel/framework": ">=7.4", ここ変更
    },
        省略
}

$ composer update

8系にすると色々ややこしいんじゃないかということで今回は7.4にしました。

パッケージのバージョンエラーあれば随時更新してあげてください。

sail インストール

ここからはこれ参考にやりました。7系の該当ページは見つかりませんでした。

$ composer install laravel/sail --dev
$ php artisan sail:install

デフォルトのmysql のサービスを選択すると下記のようなdocker-compose.ymlが生成されます。

docker-compose.yml
# For more information: https://laravel.com/docs/sail
version: '3'
services:
    laravel.test:
        build:
            context: ./vendor/laravel/sail/runtimes/8.1
            dockerfile: Dockerfile
            args:
                WWWGROUP: '${WWWGROUP}'
        image: sail-8.1/app
        extra_hosts:
            - 'host.docker.internal:host-gateway'
        ports:
            - '${APP_PORT:-80}:80'
        environment:
            WWWUSER: '${WWWUSER}'
            LARAVEL_SAIL: 1
            XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
            XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
        volumes:
            - '.:/var/www/html'
        networks:
            - sail
        depends_on:
            - mysql
    mysql:
        image: 'mysql/mysql-server:8.0'
        ports:
            - '${FORWARD_DB_PORT:-3306}:3306'
        environment:
            MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ROOT_HOST: "%"
            MYSQL_DATABASE: '${DB_DATABASE}'
            MYSQL_USER: '${DB_USERNAME}'
            MYSQL_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ALLOW_EMPTY_PASSWORD: 1
        volumes:
            - 'sailmysql:/var/lib/mysql'
        networks:
            - sail
        healthcheck:
            test: ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"]
            retries: 3
            timeout: 5s
networks:
    sail:
        driver: bridge
volumes:
    sailmysql:
        driver: local

Dockerfile も作成します。

FROM bref/php-74-fpm
COPY . /var/task
CMD [ "public/index.php" ]

これで

$ ./vendor/bin/sail up

してコンテナが正常に立ち上がれば一旦終わりです。

おまけ

laravel.testというサービス名は嫌だ。という方は、

.env
APP_SERVICE="yourServiceName"

を追記し、docker-compose.yml 内のサービス名も変更してください。

おわりに

こちら作業しながら短時間で書き上げた記事で、荒い部分あるかと思いますが、ご参考にしていただけるとありがたいです。

手前味噌

5
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
5
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?