From aeecf0d39543e0f74a86f9e8c5842db54adfa247 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 25 Feb 2026 15:17:54 +0100 Subject: [PATCH] add sail --- .env.example | 8 ++-- docker-compose.yml | 56 +++++++++++++++++++++++++ docker/mysql/Dockerfile | 4 ++ docker/mysql/create-testing-database.sh | 6 +++ phpunit.xml | 3 +- 5 files changed, 71 insertions(+), 6 deletions(-) create mode 100644 docker-compose.yml create mode 100644 docker/mysql/Dockerfile create mode 100644 docker/mysql/create-testing-database.sh diff --git a/.env.example b/.env.example index b0a0ca3..5c72e98 100644 --- a/.env.example +++ b/.env.example @@ -7,11 +7,11 @@ LOG_CHANNEL=stack LOG_LEVEL=debug DB_CONNECTION=mysql -DB_HOST=127.0.0.1 +DB_HOST=mysql DB_PORT=3306 -DB_DATABASE=heritage -DB_USERNAME=heritage -DB_PASSWORD= +DB_DATABASE=laravel +DB_USERNAME=sail +DB_PASSWORD=password BROADCAST_DRIVER=log CACHE_DRIVER=file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..e871fa9 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,56 @@ +services: + laravel.test: + build: + context: ./vendor/laravel/sail/runtimes/8.2 + dockerfile: Dockerfile + 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:-1000}' + WWWGROUP: '${WWWGROUP:-1000}' + 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:z' + networks: + - sail + depends_on: + - mysql + mysql: + image: 'heritage/mysql:8.0' + build: + context: './docker/mysql' + dockerfile: Dockerfile + 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' + networks: + - sail + healthcheck: + test: + - CMD + - mysqladmin + - ping + - '-p${DB_PASSWORD}' + retries: 3 + timeout: 5s +networks: + sail: + driver: bridge +volumes: + sail-mysql: + driver: local diff --git a/docker/mysql/Dockerfile b/docker/mysql/Dockerfile new file mode 100644 index 0000000..430c4dc --- /dev/null +++ b/docker/mysql/Dockerfile @@ -0,0 +1,4 @@ +FROM mysql/mysql-server:8.0 +COPY create-testing-database.sh /docker-entrypoint-initdb.d/10-create-testing-database.sh +RUN chmod +x /docker-entrypoint-initdb.d/10-create-testing-database.sh +RUN chown -R mysql:mysql /docker-entrypoint-initdb.d diff --git a/docker/mysql/create-testing-database.sh b/docker/mysql/create-testing-database.sh new file mode 100644 index 0000000..aeb1826 --- /dev/null +++ b/docker/mysql/create-testing-database.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +mysql --user=root --password="$MYSQL_ROOT_PASSWORD" <<-EOSQL + CREATE DATABASE IF NOT EXISTS testing; + GRANT ALL PRIVILEGES ON \`testing%\`.* TO '$MYSQL_USER'@'%'; +EOSQL diff --git a/phpunit.xml b/phpunit.xml index a8c9b4c..ce031ad 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -21,8 +21,7 @@ - - +