Files
luckywheel/HUONG_DAN_DOCKER.md
2026-01-14 15:23:55 +07:00

6.8 KiB
Raw 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

💾 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

  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.

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.