# 🎡 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 ``` ### 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.