Files
luckywheel/HUONG_DAN_DOCKER.md
2026-01-14 14:51:03 +07:00

164 lines
4.2 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🎡 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`<br>Password: `laravel123` |
| **MySQL** | localhost:3307 | Database: `luckywheel`<br>User: `laravel`<br>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ẻ! 🎉**