Files
luckywheel/HUONG_DAN_DOCKER.md

7.4 KiB
Raw Permalink Blame History

🎡 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: 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

# 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

  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

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