7.4 KiB
🎡 HƯỚNG DẪN SỬ DỤNG DOCKER - DỰ ÁN LUCKY WHEEL
🚀 Khởi động dự án lần đầu
./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: laravelPassword: laravel123 |
| MySQL | localhost:3307 | Database: luckywheelUser: laravelPassword: laravel123 |
| Redis | localhost:6380 | - |
📝 Các lệnh thường dùng
Quản lý containers
# 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
# 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
# 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
./reset_database.sh
Nếu script không chạy được, hãy chắc chắn file có quyền thực thi:
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):
docker compose exec app php artisan migrate:fresh --seed
Hoặc nếu muốn import lại từ file SQL:
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):
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)
docker compose exec app chmod -R 777 /var/www/storage /var/www/bootstrap/cache
Lỗi không kết nối được MySQL
# 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ộ
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
💾 Hướng dẫn thao tác với database mẫu Lucky Wheel
1. Backup database hiện tại ra file backup.sql
docker compose exec db mysqldump -u laravel -plaravel123 luckywheel > backup.sql
2. Import lại database mẫu từ file fsg3kct926qj_quaysoDB.sql
Khuyến nghị: Xóa và tạo lại database trước khi import để tránh lỗi "Table already exists":
docker compose exec db mysql -u laravel -plaravel123 -e "DROP DATABASE IF EXISTS luckywheel; CREATE DATABASE luckywheel CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
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).
3. Import lại database từ file backup.sql (nếu muốn khôi phục dữ liệu backup)
docker compose exec -T db mysql -u laravel -plaravel123 luckywheel < backup.sql
4. Reset database bằng lệnh migrate:fresh --seed (nếu chỉ muốn làm sạch và seed lại dữ liệu Laravel)
docker compose exec app php artisan migrate:fresh --seed
5. Sửa lỗi quyền truy cập storage/logs/laravel.log (nếu gặp lỗi Permission denied)
docker compose exec app chmod -R 777 /var/www/storage /var/www/bootstrap/cache
docker compose restart app
Lỗi này thường xảy ra sau khi import lại database hoặc copy source code mới.
🎯 Workflow phát triển
- Sửa code: Chỉnh sửa file PHP/Blade trực tiếp, thay đổi tự động reflect
- Chạy migration:
docker compose exec app php artisan migrate - Test: Truy cập http://localhost:8080 để xem kết quả
- Xem logs:
docker compose logs -f app - Debug:
docker compose exec app php artisan tinker
🛑 Dừng dự án
# 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 để 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:
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
docker compose exec db mysqldump -u laravel -plaravel123 luckywheel > backup.sql
Import lại database từ file backup.sql
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:
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.