diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..d4d2f2e --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,57 @@ +services: + laravel.test: + build: + context: ./docker/8.2 + dockerfile: Dockerfile + args: + WWWUSER: '${WWWUSER:-1000}' + WWWGROUP: '${WWWGROUP:-1000}' + 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 + XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}' + XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}' + volumes: + - '.:/var/www/html:z' + networks: + - sail + depends_on: + - mysql + mysql: + image: 'wow-raid-bingo/mysql-8.0' + build: + context: './docker/mysql/8.0' + 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/8.0/Dockerfile b/docker/mysql/8.0/Dockerfile new file mode 100644 index 0000000..430c4dc --- /dev/null +++ b/docker/mysql/8.0/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/8.0/create-testing-database.sh b/docker/mysql/8.0/create-testing-database.sh new file mode 100644 index 0000000..aeb1826 --- /dev/null +++ b/docker/mysql/8.0/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