Add local environment configuration and setup documentation for development
All checks were successful
Deploy Development / deploy (push) Successful in 2m30s
All checks were successful
Deploy Development / deploy (push) Successful in 2m30s
This commit is contained in:
36
.env.local
Normal file
36
.env.local
Normal file
@@ -0,0 +1,36 @@
|
||||
APP_ENV=local
|
||||
APP_DEBUG=true
|
||||
APP_KEY=base64:YOUR_APP_KEY_HERE
|
||||
|
||||
DB_HOST=db
|
||||
DB_DATABASE=merchbay
|
||||
DB_USERNAME=merchbay
|
||||
DB_PASSWORD=secret
|
||||
DB_PORT=3306
|
||||
|
||||
CACHE_DRIVER=file
|
||||
SESSION_DRIVER=file
|
||||
QUEUE_DRIVER=sync
|
||||
|
||||
# Local mail (logs to storage/logs/laravel.log)
|
||||
MAIL_DRIVER=log
|
||||
MAIL_HOST=localhost
|
||||
MAIL_PORT=1025
|
||||
MAIL_USERNAME=null
|
||||
MAIL_PASSWORD=null
|
||||
MAIL_ENCRYPTION=null
|
||||
|
||||
# Local URLs
|
||||
APP_URL=http://localhost:8080
|
||||
PROD_PRIVATE=http://localhost:8080
|
||||
IMAGES_URL=http://localhost:8080
|
||||
UPLOAD_URL=http://localhost:8080/uploads/
|
||||
|
||||
# Test Captcha (for local dev)
|
||||
CAPTCHA_SITE_KEY=test_key
|
||||
CAPTCHA_SECRET_KEY=test_secret
|
||||
|
||||
# Analytics (optional for local)
|
||||
ANALYTICS_SITE_ID=
|
||||
ANALYTICS_CLIENT_ID=
|
||||
ANALYTICS_SERVICE_EMAIL=
|
||||
133
LOCAL_DEVELOPMENT.md
Normal file
133
LOCAL_DEVELOPMENT.md
Normal file
@@ -0,0 +1,133 @@
|
||||
# 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
|
||||
81
docker-compose.local.yml
Normal file
81
docker-compose.local.yml
Normal file
@@ -0,0 +1,81 @@
|
||||
services:
|
||||
db:
|
||||
image: mariadb:10.6
|
||||
platform: linux/arm64
|
||||
container_name: merchbay_db_local
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
MYSQL_DATABASE: merchbay
|
||||
MYSQL_ROOT_PASSWORD: root
|
||||
MYSQL_USER: merchbay
|
||||
MYSQL_PASSWORD: secret
|
||||
ports:
|
||||
- "3306:3306"
|
||||
volumes:
|
||||
- db_data:/var/lib/mysql
|
||||
networks:
|
||||
- merchbay-local
|
||||
|
||||
app:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
container_name: merchbay_app_local
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8080:80"
|
||||
environment:
|
||||
- APP_ENV=local
|
||||
- APP_DEBUG=true
|
||||
- APP_URL=http://localhost:8080
|
||||
- DB_CONNECTION=mysql
|
||||
- DB_HOST=db
|
||||
- DB_PORT=3306
|
||||
- DB_DATABASE=merchbay
|
||||
- DB_USERNAME=merchbay
|
||||
- DB_PASSWORD=secret
|
||||
- PROD_PRIVATE=http://localhost:8080
|
||||
- IMAGES_URL=http://localhost:8080
|
||||
- UPLOAD_URL=http://localhost:8080/uploads/
|
||||
- MAIL_DRIVER=log
|
||||
- MAIL_HOST=localhost
|
||||
- MAIL_PORT=1025
|
||||
- MAIL_USERNAME=null
|
||||
- MAIL_PASSWORD=null
|
||||
- MAIL_ENCRYPTION=null
|
||||
- CAPTCHA_SITE_KEY=test_key
|
||||
- CAPTCHA_SECRET_KEY=test_secret
|
||||
- ANALYTICS_SITE_ID=
|
||||
- ANALYTICS_CLIENT_ID=
|
||||
- ANALYTICS_SERVICE_EMAIL=
|
||||
volumes:
|
||||
- ./:/var/www/html
|
||||
- ./storage:/var/www/html/storage
|
||||
- ./public/uploads:/var/www/html/public/uploads
|
||||
depends_on:
|
||||
- db
|
||||
networks:
|
||||
- merchbay-local
|
||||
|
||||
phpmyadmin:
|
||||
image: arm64v8/phpmyadmin
|
||||
platform: linux/arm64
|
||||
container_name: merchbay_phpmyadmin
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8081:80"
|
||||
environment:
|
||||
PMA_HOST: db
|
||||
PMA_PORT: 3306
|
||||
MYSQL_ROOT_PASSWORD: root
|
||||
depends_on:
|
||||
- db
|
||||
networks:
|
||||
- merchbay-local
|
||||
|
||||
networks:
|
||||
merchbay-local:
|
||||
driver: bridge
|
||||
|
||||
volumes:
|
||||
db_data:
|
||||
@@ -86,54 +86,6 @@
|
||||
</div>
|
||||
<!-- ./col -->
|
||||
</div>
|
||||
{{-- <div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="box box-primary">
|
||||
<div class="box-header with-border">
|
||||
<h3 class="box-title">Total Sales</h3>
|
||||
<div class="box-tools">
|
||||
<button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i>
|
||||
</button>
|
||||
<button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div class="well">
|
||||
<div class="form-group col-md-3">
|
||||
<label class="control-label">Select Year: <span class="required">*</span></label>
|
||||
<select type="text" class="form-control" placeholder="Select Select Year">
|
||||
<option value="2020">2020</option>
|
||||
<option value="2019">2019</option>
|
||||
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group col-md-3">
|
||||
<label class="control-label">Select Month <span class="required">*</span></label>
|
||||
<select class="form-control" placeholder="Select Date">
|
||||
<option value="">January</option>
|
||||
<option value="">February</option>
|
||||
<option value="">March</option>
|
||||
<option value="">April</option>
|
||||
<option value="">May</option>
|
||||
<option value="">June</option>
|
||||
<option value="">July</option>
|
||||
<option value="">August</option>
|
||||
<option value="">September</option>
|
||||
<option value="">October</option>
|
||||
<option value="">November</option>
|
||||
<option value="">December</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
<div class="chart">
|
||||
<canvas id="myChart" style="height:350px"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /.box-body -->
|
||||
</div>
|
||||
</div>
|
||||
</div> --}}
|
||||
|
||||
@else
|
||||
<div class="text-center" id="homepage-logo">
|
||||
|
||||
Reference in New Issue
Block a user