6.8 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
💾 Import/Export dữ liệu
Import file SQL có sẵn
docker compose exec -T db mysql -u laravel -plaravel123 luckywheel < your-file.sql
Backup toàn bộ database
docker compose exec db mysqldump -u laravel -plaravel123 luckywheel > backup_$(date +%Y%m%d_%H%M%S).sql
🎯 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.
Import lại database mẫu khi bị lỗi 'Table already exists'
Nếu khi import file fsg3kct926qj_quaysoDB.sql bị lỗi như sau:
ERROR 1050 (42S01) at line ...: Table 'failed_jobs' already exists
Hãy xóa và tạo lại database trước khi import:
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ệnh này sẽ đảm bảo database sạch hoàn toàn trước khi import dữ liệu mẫu.