# 🎡 HƯỚNG DẪN SỬ DỤNG DOCKER - DỰ ÁN LUCKY WHEEL
## 🚀 Khởi động dự án lần đầu
```bash
./docker-setup.sh
```
## 🌐 Truy cập ứng dụng
| Dịch vụ | URL | Thông tin đăng nhập |
|---------|-----|---------------------|
| **Ứng dụng Web** | http://localhost:8080 | - |
| **PHPMyAdmin** | http://localhost:8081 | User: `laravel`
Password: `laravel123` |
| **MySQL** | localhost:3307 | Database: `luckywheel`
User: `laravel`
Password: `laravel123` |
| **Redis** | localhost:6380 | - |
## 📝 Các lệnh thường dùng
### Quản lý containers
```bash
# Xem trạng thái containers
docker compose ps
# Xem logs
docker compose logs -f
# Dừng containers
docker compose down
# Khởi động lại
docker compose restart
# Dừng và xóa hoàn toàn (bao gồm dữ liệu)
docker compose down -v
```
### Làm việc với ứng dụng
```bash
# Vào container app
docker compose exec app bash
# Chạy lệnh artisan
docker compose exec app php artisan migrate
docker compose exec app php artisan db:seed
docker compose exec app php artisan tinker
# Clear cache
docker compose exec app php artisan cache:clear
docker compose exec app php artisan config:clear
docker compose exec app php artisan view:clear
# Cài package mới
docker compose exec app composer require package-name
```
### Làm việc với database
```bash
# Truy cập MySQL CLI
docker compose exec db mysql -u laravel -plaravel123 luckywheel
# Backup database
docker compose exec db mysqldump -u laravel -plaravel123 luckywheel > backup.sql
# Import database
docker compose exec -T db mysql -u laravel -plaravel123 luckywheel < backup.sql
# Reset database
docker compose exec app php artisan migrate:fresh --seed
```
## 🔧 Sửa lỗi thường gặp
### Lỗi quyền truy cập (Permission denied)
```bash
docker compose exec app chmod -R 777 /var/www/storage /var/www/bootstrap/cache
```
### Lỗi không kết nối được MySQL
```bash
# Restart MySQL
docker compose restart db
# Xem logs MySQL
docker compose logs db
```
### Port bị chiếm
Mở file `docker-compose.yml` và thay đổi port:
- `"8080:80"` → `"8081:80"` (cho app)
- `"3307:3306"` → `"3308:3306"` (cho MySQL)
### Rebuild lại toàn bộ
```bash
docker compose down -v
docker compose build --no-cache
docker compose up -d
```
## 📂 Cấu trúc Docker
```
LuckyWheel/
├── Dockerfile # Build image PHP/Laravel
├── docker-compose.yml # Cấu hình services
├── .env.docker # Environment cho Docker
├── docker-setup.sh # Script khởi động tự động
├── docker-stop.sh # Script dừng containers
└── docker/
├── nginx/
│ └── default.conf # Cấu hình Nginx
├── supervisor/
│ └── supervisord.conf # Cấu hình Supervisor
└── mysql/
└── my.cnf # Cấu hình MySQL
```
## 💾 Import/Export dữ liệu
### Import file SQL có sẵn
```bash
docker compose exec -T db mysql -u laravel -plaravel123 luckywheel < your-file.sql
```
### Backup toàn bộ database
```bash
docker compose exec db mysqldump -u laravel -plaravel123 luckywheel > backup_$(date +%Y%m%d_%H%M%S).sql
```
## 🎯 Workflow phát triển
1. **Sửa code**: Chỉnh sửa file PHP/Blade trực tiếp, thay đổi tự động reflect
2. **Chạy migration**: `docker compose exec app php artisan migrate`
3. **Test**: Truy cập http://localhost:8080 để xem kết quả
4. **Xem logs**: `docker compose logs -f app`
5. **Debug**: `docker compose exec app php artisan tinker`
## 🛑 Dừng dự án
```bash
# Dừng containers (giữ nguyên dữ liệu)
./docker-stop.sh
# Hoặc
docker compose down
# Dừng và XÓA toàn bộ dữ liệu
docker compose down -v
```
## ℹ️ Thông tin thêm
- Source code được mount từ host → thay đổi code không cần rebuild
- Database được lưu trong Docker volume `dbdata`
- Redis data được lưu trong volume `redisdata`
- Logs nằm trong `/var/log/supervisor/` bên trong container
## 🆘 Cần trợ giúp?
Xem file [DOCKER_README.md](DOCKER_README.md) để có hướng dẫn chi tiết hơn.
---
**Chúc bạn code vui vẻ! 🎉**