Some checks failed
Deploy Production (admin.crewsportswear.app) / deploy (push) Failing after 4m8s
226 lines
5.3 KiB
Markdown
226 lines
5.3 KiB
Markdown
# Crew Admin Panel
|
|
|
|
A comprehensive administration platform built with Laravel 5.2 for managing custom sportswear operations, product catalogs, and customer relationships.
|
|
|
|
## Overview
|
|
|
|
Crew Admin is a web-based administration interface designed to streamline business operations for Crew Sportswear's custom merchandise management. The platform provides robust tools for inventory control, order processing, and analytics.
|
|
|
|
## Technology Stack
|
|
|
|
- **Framework**: Laravel 5.2
|
|
- **PHP Version**: 7.4
|
|
- **Web Server**: Apache 2.4
|
|
- **Database**: MySQL (separate container)
|
|
- **Reverse Proxy**: Traefik with Let's Encrypt SSL
|
|
- **Containerization**: Docker & Docker Compose
|
|
- **CI/CD**: Gitea Actions
|
|
|
|
## Features
|
|
|
|
- User authentication and role-based access control
|
|
- Product and inventory management
|
|
- Order processing and tracking
|
|
- Customer relationship management
|
|
- Analytics and reporting dashboard
|
|
- RESTful API endpoints
|
|
- Secure HTTPS communication
|
|
- Automated deployment workflows
|
|
|
|
## Requirements
|
|
|
|
- Docker Engine 20.10+
|
|
- Docker Compose 2.0+
|
|
- PHP 7.4 (for local development)
|
|
- Composer 1.x
|
|
- MySQL 5.7+ or MariaDB 10.3+
|
|
|
|
## Deployment
|
|
|
|
### Production Deployment
|
|
|
|
Production is automatically deployed via Gitea Actions when pushing to `main` or `master` branch.
|
|
|
|
**Production URL**: https://admin.crewsportswear.app
|
|
|
|
```bash
|
|
# Trigger production deployment
|
|
git push origin main
|
|
```
|
|
|
|
The deployment workflow:
|
|
1. Builds Docker image
|
|
2. Transfers image to production server via SSH
|
|
3. Deploys to `/var/www/apps/crew_admin`
|
|
4. Runs migrations and cache clearing
|
|
5. Performs health check
|
|
|
|
### Development Deployment
|
|
|
|
Development environment is automatically deployed when pushing to `dev` branch.
|
|
|
|
**Development URL**: https://dev-admin.crewsportswear.app
|
|
|
|
```bash
|
|
# Trigger dev deployment
|
|
git push origin dev
|
|
```
|
|
|
|
### Manual Deployment
|
|
|
|
```bash
|
|
# Build and deploy production
|
|
docker compose -f docker-compose.prod.yml up -d --build
|
|
|
|
# Build and deploy development
|
|
docker compose -f docker-compose.dev.yml up -d --build
|
|
```
|
|
|
|
## Configuration
|
|
|
|
### Environment Variables
|
|
|
|
Create a `.env` file in the deployment directory with:
|
|
|
|
```env
|
|
# Application
|
|
APP_ENV=production
|
|
APP_DEBUG=false
|
|
APP_KEY=base64:your-32-character-key-here
|
|
APP_URL=https://admin.crewsportswear.app
|
|
|
|
# Database (external MySQL container)
|
|
DB_CONNECTION=mysql
|
|
DB_HOST=mysql_container_name
|
|
DB_PORT=3306
|
|
DB_DATABASE=crew_admin
|
|
DB_USERNAME=crew_admin_user
|
|
DB_PASSWORD=your-secure-password
|
|
|
|
# Additional configuration
|
|
IMAGES_DIRECTORY=/path/to/images
|
|
PRODUCTION_PRIVATE_SERVER=http://internal-server
|
|
```
|
|
|
|
### SSL/HTTPS Configuration
|
|
|
|
The application uses Traefik as a reverse proxy with automatic Let's Encrypt SSL certificates. The certresolver is set to `le` in `docker-compose.prod.yml`:
|
|
|
|
```yaml
|
|
traefik.http.routers.crew-admin.tls=true
|
|
traefik.http.routers.crew-admin.tls.certresolver=le
|
|
```
|
|
|
|
Ensure your DNS points to the server before deployment.
|
|
|
|
## Docker Networks
|
|
|
|
The application requires two Docker networks:
|
|
|
|
- `traefik-public`: External network for Traefik routing
|
|
- `crew-app-net`: Internal network for inter-service communication
|
|
|
|
These are automatically created by the deployment script.
|
|
|
|
## Local Development
|
|
|
|
```bash
|
|
# Install dependencies
|
|
composer install
|
|
|
|
# Copy environment file
|
|
cp .env.example .env
|
|
|
|
# Generate application key
|
|
php artisan key:generate
|
|
|
|
# Configure database in .env file
|
|
# Run migrations
|
|
php artisan migrate
|
|
|
|
# Start development server
|
|
php artisan serve
|
|
```
|
|
|
|
## Gitea Workflows
|
|
|
|
### Production Deployment Workflow
|
|
- **File**: `.gitea/workflows/deploy.yml`
|
|
- **Trigger**: Push to `main` or `master`
|
|
- **Target**: `/var/www/apps/crew_admin`
|
|
- **Domain**: admin.crewsportswear.app
|
|
|
|
### Development Deployment Workflow
|
|
- **File**: `.gitea/workflows/deploy-dev.yml`
|
|
- **Trigger**: Push to `dev`
|
|
- **Target**: `/var/www/apps/crew_admin_dev`
|
|
- **Domain**: dev-admin.crewsportswear.app
|
|
|
|
### Docker Registry Build Workflow
|
|
- **File**: `.gitea/workflows/build-push.yml`
|
|
- **Trigger**: Version tag (e.g., `v1.0.0`)
|
|
- **Action**: Builds and pushes to Docker registry
|
|
|
|
## Required Secrets
|
|
|
|
Configure these secrets in your Gitea repository settings:
|
|
|
|
- `DEPLOY_SSH_KEY`: SSH private key for deployment server
|
|
- `DEPLOY_HOST`: Deployment server hostname/IP
|
|
- `DEPLOY_USER`: SSH username for deployment
|
|
|
|
## Artisan Commands
|
|
|
|
Common commands for cache management:
|
|
|
|
```bash
|
|
# Clear all caches
|
|
docker exec crew_admin_app php artisan cache:clear
|
|
docker exec crew_admin_app php artisan config:clear
|
|
docker exec crew_admin_app php artisan view:clear
|
|
|
|
# Rebuild caches
|
|
docker exec crew_admin_app php artisan config:cache
|
|
docker exec crew_admin_app php artisan route:cache
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Container Not Starting
|
|
|
|
```bash
|
|
# Check container logs
|
|
docker logs crew_admin_app
|
|
|
|
# Check if networks exist
|
|
docker network ls | grep -E "traefik-public|crew-app-net"
|
|
|
|
# Recreate networks if needed
|
|
docker network create traefik-public
|
|
docker network create crew-app-net
|
|
```
|
|
|
|
### SSL Certificate Issues
|
|
|
|
```bash
|
|
# Check Traefik logs
|
|
docker logs traefik 2>&1 | grep crew-admin
|
|
|
|
# Verify DNS is pointing correctly
|
|
dig admin.crewsportswear.app
|
|
```
|
|
|
|
### Database Connection Issues
|
|
|
|
```bash
|
|
# Verify database container is running
|
|
docker ps | grep mysql
|
|
|
|
# Check network connectivity
|
|
docker exec crew_admin_app ping mysql_container_name
|
|
```
|
|
|
|
## License
|
|
|
|
Proprietary software for Crew Sportswear operations.
|