はじめに
昔作ったアプリの開発環境が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 内のサービス名も変更してください。
おわりに
こちら作業しながら短時間で書き上げた記事で、荒い部分あるかと思いますが、ご参考にしていただけるとありがたいです。
手前味噌