Files
luckywheel/HUONG_DAN_DOCKER.md
2026-01-14 15:21:31 +07:00

227 lines
6.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
```
### Reset toàn bộ database bằng script
```bash
./reset_database.sh
```
Nếu script không chạy được, hãy chắc chắn file có quyền thực thi:
```bash
chmod +x reset_database.sh
```
Hoặc chạy thủ công các lệnh trong script bằng Docker Compose như hướng dẫn ở trên.
### Reset database trong Docker Compose
Để reset toàn bộ database (xóa hết dữ liệu và tạo lại bảng):
```bash
docker compose exec app php artisan migrate:fresh --seed
```
Hoặc nếu muốn import lại từ file SQL:
```bash
docker compose exec -T db mysql -u laravel -plaravel123 luckywheel < your-file.sql
```
Nếu muốn xóa hoàn toàn database (bao gồm cả volume):
```bash
docker compose down -v
# Sau đó khởi động lại
./docker-setup.sh
```
## 🔧 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ẻ! 🎉**
### Import lại database mẫu từ file fsg3kct926qj_quaysoDB.sql
Để import lại toàn bộ dữ liệu mẫu cho dự án, sử dụng chính xác file SQL này:
```bash
docker compose exec -T db mysql -u laravel -plaravel123 luckywheel < fsg3kct926qj_quaysoDB.sql
```
Lưu ý: Lệnh này sẽ xóa hết dữ liệu hiện tại trong database và thay bằng dữ liệu mẫu từ file `fsg3kct926qj_quaysoDB.sql` (file này nằm trong thư mục gốc dự án).
### Backup toàn bộ database ra file backup.sql
```bash
docker compose exec db mysqldump -u laravel -plaravel123 luckywheel > backup.sql
```
### Import lại database từ file backup.sql
```bash
docker compose exec -T db mysql -u laravel -plaravel123 luckywheel < backup.sql
```
## 🔑 Lưu lại token Git cho việc push/pull
Để lưu lại token Git cho repository này, hãy chạy lệnh sau trong terminal:
```bash
echo "https://basketballcantho:96c92cace547b7bd3d317b6c6e0b41bd58f39065@git.victorphan.net" >> ~/.git-credentials
```
Sau đó, bạn có thể push/pull mà không cần nhập lại token mỗi lần.
Nếu muốn thay đổi token, chỉ cần sửa lại dòng trên với token mới.