269 lines
6.3 KiB
Markdown
Executable file
269 lines
6.3 KiB
Markdown
Executable file
# Laravel Application with Podman
|
|
|
|
This is a Laravel 12 application configured to run in Podman containers.
|
|
|
|
## Requirements
|
|
|
|
- Podman 5.0 or later
|
|
- podman-compose
|
|
|
|
## Services
|
|
|
|
The application stack includes:
|
|
|
|
- **app**: Laravel application (PHP 8.3-FPM + Nginx)
|
|
- **db**: MySQL 8.0 database
|
|
- **redis**: Redis cache server
|
|
|
|
## Quick Start
|
|
|
|
### 1. Start the containers
|
|
|
|
```bash
|
|
podman-compose up -d --build
|
|
```
|
|
|
|
This will build and start all containers in detached mode.
|
|
|
|
### 2. Access the application
|
|
|
|
Open your browser and navigate to:
|
|
```
|
|
http://localhost:8080
|
|
```
|
|
|
|
### 3. Run migrations
|
|
|
|
The initial migrations have already been run during setup. If you need to run additional migrations:
|
|
|
|
```bash
|
|
podman-compose exec app php artisan migrate
|
|
```
|
|
|
|
## Common Commands
|
|
|
|
### Container Management
|
|
|
|
```bash
|
|
# Start containers
|
|
podman-compose up -d
|
|
|
|
# Stop containers
|
|
podman-compose down
|
|
|
|
# View logs
|
|
podman-compose logs -f
|
|
|
|
# View app logs only
|
|
podman-compose logs -f app
|
|
|
|
# Rebuild containers
|
|
podman-compose up -d --build
|
|
```
|
|
|
|
### Laravel Artisan Commands
|
|
|
|
```bash
|
|
# Run any artisan command
|
|
podman-compose exec app php artisan [command]
|
|
|
|
# Examples:
|
|
podman-compose exec app php artisan migrate
|
|
podman-compose exec app php artisan migrate:fresh --seed
|
|
podman-compose exec app php artisan make:model Post -m
|
|
podman-compose exec app php artisan make:controller PostController
|
|
podman-compose exec app php artisan route:list
|
|
podman-compose exec app php artisan tinker
|
|
```
|
|
|
|
### Composer Commands
|
|
|
|
```bash
|
|
# Install dependencies
|
|
podman-compose exec app composer install
|
|
|
|
# Update dependencies
|
|
podman-compose exec app composer update
|
|
|
|
# Add a package
|
|
podman-compose exec app composer require vendor/package
|
|
```
|
|
|
|
### Database Access
|
|
|
|
```bash
|
|
# Access MySQL CLI
|
|
podman-compose exec db mysql -u laravel -psecret laravel
|
|
|
|
# Or as root
|
|
podman-compose exec db mysql -u root -proot laravel
|
|
```
|
|
|
|
### Redis Access
|
|
|
|
```bash
|
|
# Access Redis CLI
|
|
podman-compose exec redis redis-cli
|
|
```
|
|
|
|
### Running Tests
|
|
|
|
```bash
|
|
# Run PHPUnit tests
|
|
podman-compose exec app php artisan test
|
|
|
|
# Or using vendor binary
|
|
podman-compose exec app ./vendor/bin/phpunit
|
|
```
|
|
|
|
### File Permissions
|
|
|
|
If you encounter permission issues with storage or cache:
|
|
|
|
```bash
|
|
podman-compose exec app chown -R www-data:www-data /var/www/html/storage
|
|
podman-compose exec app chmod -R 755 /var/www/html/storage
|
|
```
|
|
|
|
## Configuration
|
|
|
|
### Environment Variables
|
|
|
|
The application is configured via the `.env` file. Key Docker-specific settings:
|
|
|
|
```
|
|
DB_CONNECTION=mysql
|
|
DB_HOST=db
|
|
DB_PORT=3306
|
|
DB_DATABASE=laravel
|
|
DB_USERNAME=laravel
|
|
DB_PASSWORD=secret
|
|
|
|
REDIS_HOST=redis
|
|
REDIS_PORT=6379
|
|
```
|
|
|
|
### Database Credentials
|
|
|
|
- **Database**: laravel
|
|
- **Username**: laravel
|
|
- **Password**: secret
|
|
- **Root Password**: root
|
|
|
|
### Ports
|
|
|
|
- **Application**: 8080 (maps to container port 80)
|
|
- **MySQL**: 3306
|
|
- **Redis**: 6379
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
.
|
|
├── app/ # Application code
|
|
├── bootstrap/ # Bootstrap files
|
|
├── config/ # Configuration files
|
|
├── database/ # Migrations, seeders, factories
|
|
├── docker/ # Docker configuration
|
|
│ ├── nginx/ # Nginx configuration
|
|
│ └── supervisor/ # Supervisor configuration
|
|
├── public/ # Public assets
|
|
├── resources/ # Views, assets
|
|
├── routes/ # Route definitions
|
|
├── storage/ # Storage files
|
|
├── tests/ # Tests
|
|
├── vendor/ # Composer dependencies
|
|
├── compose.yml # Podman Compose configuration
|
|
├── Dockerfile # Container image definition
|
|
└── .env # Environment configuration
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Containers won't start
|
|
|
|
```bash
|
|
# Check container status
|
|
podman-compose ps
|
|
|
|
# View container logs
|
|
podman-compose logs
|
|
```
|
|
|
|
### Database connection errors
|
|
|
|
Ensure the database container is running and healthy:
|
|
|
|
```bash
|
|
podman-compose ps
|
|
podman-compose exec db mysql -u root -proot -e "SHOW DATABASES;"
|
|
```
|
|
|
|
### Permission denied errors
|
|
|
|
Fix storage permissions:
|
|
|
|
```bash
|
|
podman-compose exec app chown -R www-data:www-data storage bootstrap/cache
|
|
podman-compose exec app chmod -R 775 storage bootstrap/cache
|
|
```
|
|
|
|
### Clear Laravel cache
|
|
|
|
```bash
|
|
podman-compose exec app php artisan cache:clear
|
|
podman-compose exec app php artisan config:clear
|
|
podman-compose exec app php artisan route:clear
|
|
podman-compose exec app php artisan view:clear
|
|
```
|
|
|
|
## Development Workflow
|
|
|
|
1. Make code changes in your local files
|
|
2. Changes are reflected immediately via volume mounting
|
|
3. For composer or config changes, you may need to restart containers:
|
|
```bash
|
|
podman-compose restart app
|
|
```
|
|
|
|
## Stopping the Application
|
|
|
|
```bash
|
|
# Stop containers (preserves data)
|
|
podman-compose down
|
|
|
|
# Stop and remove volumes (deletes database data)
|
|
podman-compose down -v
|
|
```
|
|
|
|
## Additional Information
|
|
|
|
- Laravel Version: 12.52.0
|
|
- PHP Version: 8.3
|
|
- MySQL Version: 8.0
|
|
- Nginx: Latest stable
|
|
- Redis: Alpine latest
|
|
|
|
For more information about Laravel, visit [https://laravel.com/docs](https://laravel.com/docs)
|
|
|
|
---
|
|
|
|
## About Laravel
|
|
|
|
Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as:
|
|
|
|
- [Simple, fast routing engine](https://laravel.com/docs/routing).
|
|
- [Powerful dependency injection container](https://laravel.com/docs/container).
|
|
- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage.
|
|
- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent).
|
|
- Database agnostic [schema migrations](https://laravel.com/docs/migrations).
|
|
- [Robust background job processing](https://laravel.com/docs/queues).
|
|
- [Real-time event broadcasting](https://laravel.com/docs/broadcasting).
|
|
|
|
## Security Vulnerabilities
|
|
|
|
If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed.
|
|
|
|
## License
|
|
|
|
The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).
|