laravel sailで組んでいる既存のプロジェクトにredisとかを追加する的な
laravel sailをinstallすると(あるいはlaravel.buildを使ってもいいけど)docker-compose.yamlが結局作られて、この時に選択したサービスのみが列挙される事になる
version: '3'
services:
laravel.test:
build:
context: ./vendor/laravel/sail/runtimes/8.2
dockerfile: Dockerfile
args:
WWWGROUP: '${WWWGROUP}'
image: sail-8.2/app
extra_hosts:
- 'host.docker.internal:host-gateway'
ports:
- '${APP_PORT:-80}:80'
- '${VITE_PORT:-5173}:${VITE_PORT:-5173}'
environment:
WWWUSER: '${WWWUSER}'
LARAVEL_SAIL: 1
VITE_HOST: '${VITE_HOST}'
XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
IGNITION_LOCAL_SITES_PATH: '${PWD}'
volumes:
- '.:/var/www/html'
networks:
- sail
depends_on:
- mysql
- mailpit
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:
- 'sail-mysql:/var/lib/mysql'
- './vendor/laravel/sail/database/mysql/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh'
networks:
- sail
healthcheck:
test:
- CMD
- mysqladmin
- ping
- '-p${DB_PASSWORD}'
retries: 3
timeout: 5s
mailpit:
image: 'axllent/mailpit:latest'
ports:
- '${FORWARD_MAILPIT_PORT:-1025}:1025'
- '${FORWARD_MAILPIT_DASHBOARD_PORT:-8025}:8025'
networks:
- sail
networks:
sail:
driver: bridge
volumes:
sail-mysql:
driver: local
このような例はmysqlとmailpitの2つだけを使っている例だ。
実はsailがinstall済みだとartisanにコマンドが追加されており、以下のようなものが利用可能である
sail
sail:add Add a service to an existing Sail installation
sail:install Install Laravel Sail's default Docker Compose file
sail:publish Publish the Laravel Sail Docker files
もちろん、ここではsail:addを使う。ヘルプを見てみよう
% ./vendor/bin/sail artisan help sail:add
Description:
Add a service to an existing Sail installation
Usage:
sail:add [<services>]
Arguments:
services The services that should be added
Options:
-h, --help Display help for the given command. When no command is given display help for the list command
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi|--no-ansi Force (or disable --no-ansi) ANSI output
-n, --no-interaction Do not ask any interactive question
--env[=ENV] The environment the command should run under
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
何のサービスが使えるかは書いてないみたいですね、と思いきや、そうでもねえんだなこれが
% ./vendor/bin/sail artisan sail:add
とかやってenterするとインタラクティブな感じで選択できるのでした
これはスペースを押すと色が付くので、欲しいサービスをまずスペースで選択してからenterする事。今回はredisを追加した。すると
+ - redis
mysql:
image: 'mysql/mysql-server:8.0'
ports:
@@ -57,9 +58,26 @@ services:
- '${FORWARD_MAILPIT_DASHBOARD_PORT:-8025}:8025'
networks:
- sail
+ redis:
+ image: 'redis:alpine'
+ ports:
+ - '${FORWARD_REDIS_PORT:-6379}:6379'
+ volumes:
+ - 'sail-redis:/data'
+ networks:
+ - sail
+ healthcheck:
+ test:
+ - CMD
+ - redis-cli
+ - ping
+ retries: 3
+ timeout: 5s
networks:
sail:
driver: bridge
volumes:
sail-mysql:
driver: local
+ sail-redis:
+ driver: local
こんな感じでうまいこと追加してくれるので、sailを再起動するとredisも起動する。
% ./vendor/bin/sail redis
127.0.0.1:6379> set mykey myvalue
OK
127.0.0.1:6379> get mykey
"myvalue"
127.0.0.1:6379> keys *
1) "mykey"
127.0.0.1:6379> flushall
OK
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> quit
という具合にshellでも確認できます。
あとは使うだけやね
この記事が気に入ったらサポートをしてみませんか?