134 lines
2.8 KiB
Markdown
134 lines
2.8 KiB
Markdown
# 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
|