From 180aedd11a3304055c77dcdd1abbf9d8c23efed1 Mon Sep 17 00:00:00 2001 From: Alexis Saettler Date: Wed, 22 May 2024 23:48:23 +0200 Subject: [PATCH] build: add Laravel sail (#7267) --- .env.example.sail | 47 ++++++++++++++++++ docker-compose.yml | 116 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 163 insertions(+) create mode 100644 .env.example.sail create mode 100644 docker-compose.yml diff --git a/.env.example.sail b/.env.example.sail new file mode 100644 index 00000000000..64f0c82864b --- /dev/null +++ b/.env.example.sail @@ -0,0 +1,47 @@ +# Example configuration file to use with Laravel sail +# Copy this file to .env and adjust the values to your needs + +# Initial setup: +# cp .env.example.sail .env +# docker run --rm -u "$(id -u):$(id -g)" -v "$(pwd):/var/www/html" -w /var/www/html laravelsail/php83-composer:latest composer install --ignore-platform-reqs +# ./vendor/bin/sail up -d + +APP_NAME=Monica +APP_ENV=local +APP_KEY= +APP_DEBUG=true +APP_URL=http://localhost + +DB_CONNECTION=mariadb +DB_HOST=mariadb +DB_PORT=3306 +DB_DATABASE=monica +DB_USERNAME=monica +DB_PASSWORD=password + +LOG_CHANNEL=stack + +CACHE_STORE=memcached +QUEUE_CONNECTION=redis +SESSION_DRIVER=database + +REDIS_HOST=redis +REDIS_PASSWORD=null +REDIS_PORT=6379 + +MAIL_MAILER=smtp +MAIL_HOST=mailpit +MAIL_PORT=1025 +MAIL_USERNAME=null +MAIL_PASSWORD=null +MAIL_ENCRYPTION=null +MAIL_FROM_ADDRESS=hello@example.com +MAIL_FROM_NAME="${APP_NAME}" +MAIL_REPLY_TO_ADDRESS=hello@example.com +MAIL_REPLY_TO_NAME="${APP_NAME}" + +SCOUT_DRIVER=meilisearch +SCOUT_QUEUE=true +MEILISEARCH_HOST=http://meilisearch:7700 +MEILISEARCH_KEY= +MEILISEARCH_NO_ANALYTICS=false diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000000..c25380fb2df --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,116 @@ +services: + laravel.test: &app + build: + context: ./vendor/laravel/sail/runtimes/8.3 + dockerfile: Dockerfile + args: + WWWGROUP: '${WWWGROUP}' + image: sail-8.3/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 + 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: + - mariadb + - redis + - memcached + - meilisearch + - mailpit + laravel.queue: + <<: *app + command: 'php artisan queue:work --sleep=10 --timeout=0 --tries=3 --queue=high,default,low' + laravel.cron: + <<: *app + command: 'php artisan schedule:run' + mariadb: + image: 'mariadb:10' + 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: 'yes' + volumes: + - 'sail-mariadb:/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 + 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 + memcached: + image: 'memcached:alpine' + ports: + - '${FORWARD_MEMCACHED_PORT:-11211}:11211' + networks: + - sail + meilisearch: + image: 'getmeili/meilisearch:latest' + ports: + - '${FORWARD_MEILISEARCH_PORT:-7700}:7700' + environment: + MEILI_NO_ANALYTICS: '${MEILISEARCH_NO_ANALYTICS:-false}' + volumes: + - 'sail-meilisearch:/meili_data' + networks: + - sail + healthcheck: + test: + - CMD + - wget + - '--no-verbose' + - '--spider' + - 'http://localhost:7700/health' + 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-mariadb: + driver: local + sail-redis: + driver: local + sail-meilisearch: + driver: local