# Local Development Setup for Merchbay ## Quick Start 1. **Copy local environment file:** ```bash cp .env.local .env ``` 2. **Build and start containers:** ```bash docker-compose -f docker-compose.local.yml up -d --build ``` 3. **Generate application key:** ```bash docker exec merchbay_app_local php artisan key:generate ``` 4. **Run migrations:** ```bash docker exec merchbay_app_local php artisan migrate ``` 5. **Access the application:** - **App:** http://localhost:8080 - **phpMyAdmin:** http://localhost:8081 - Username: `merchbay` - Password: `secret` ## Development Commands ### View logs ```bash # Application logs docker exec merchbay_app_local tail -f storage/logs/laravel.log # Apache logs docker logs -f merchbay_app_local ``` ### Run artisan commands ```bash docker exec merchbay_app_local php artisan [command] ``` ### Access container shell ```bash docker exec -it merchbay_app_local bash ``` ### Database access ```bash docker exec -it merchbay_db_local mysql -u merchbay -psecret merchbay ``` ### Clear caches ```bash docker exec merchbay_app_local php artisan cache:clear docker exec merchbay_app_local php artisan config:clear docker exec merchbay_app_local php artisan view:clear ``` ### Stop containers ```bash docker-compose -f docker-compose.local.yml down ``` ### Stop and remove volumes (clean slate) ```bash docker-compose -f docker-compose.local.yml down -v ``` ## Debugging ### Enable Xdebug (if needed) Add to Dockerfile: ```dockerfile RUN pecl install xdebug-2.9.8 && docker-php-ext-enable xdebug ``` ### Check container status ```bash docker-compose -f docker-compose.local.yml ps ``` ### View all logs ```bash docker-compose -f docker-compose.local.yml logs -f ``` ## Hot Reload Development For live code changes without rebuilding: - Code changes in `.php` files are reflected immediately (via volume mount) - View changes are reflected immediately - Config/route changes require cache clearing ## Database Management ### Import SQL dump ```bash docker exec -i merchbay_db_local mysql -u merchbay -psecret merchbay < dump.sql ``` ### Export database ```bash docker exec merchbay_db_local mysqldump -u merchbay -psecret merchbay > dump.sql ``` ## Troubleshooting ### Permission issues ```bash docker exec merchbay_app_local chown -R www-data:www-data storage bootstrap/cache docker exec merchbay_app_local chmod -R 775 storage bootstrap/cache ``` ### Reset everything ```bash docker-compose -f docker-compose.local.yml down -v docker rmi merchbay_app:local rm .env cp .env.local .env docker-compose -f docker-compose.local.yml up -d --build ``` ## Notes - The local setup uses a separate MySQL container - All code changes are live-mounted for easy development - Mail is logged to `storage/logs/laravel.log` instead of being sent - phpMyAdmin is available for easy database management