166 lines
3 KiB
Markdown
Executable file
166 lines
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
|
|
```
|
|
|
|
## 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
|
|
```
|