# Laravel Docker Setup - thankcard-system ## 1. Cấu trúc thư mục ```txt thankcard-system/ ├─ .env ├─ artisan ├─ composer.json ├─ public/ ├─ storage/ ├─ bootstrap/ ├─ doc/ └─ docker/ ├─ docker-compose.yml ├─ Dockerfile ├─ README.md ├─ env/ │ └─ .env.app ├─ nginx/ │ └─ default.conf └─ php/ └─ entrypoint.sh ``` --- ## 2. Khởi chạy dự án (Docker) Đứng tại thư mục root của dự án `thankcard-system` và chạy: ```bash docker compose -f docker/docker-compose.yml up -d --build ``` Hoặc di chuyển vào thư mục `docker/` rồi chạy: ```bash cd docker docker compose up -d --build ``` Sau khi các container chạy thành công, truy cập hệ thống tại trình duyệt: ```txt http://localhost:8888 ``` --- ## 3. Cơ chế cấu hình môi trường (.env) - File `.env` chính của Laravel vẫn nằm ở thư mục root để phục vụ máy local. - Khi chạy trong container Docker, hệ thống sẽ sử dụng file **`docker/env/.env.app`** để ghi đè các cấu hình cần thiết (ví dụ: `DB_HOST=host.docker.internal` giúp PHP container kết nối ra cơ sở dữ liệu trên máy thật). --- ## 4. Các lệnh cần chạy thủ công khi cập nhật code ### 4.1. Khi thêm/cập nhật thư viện mới (`composer.json`) Khi cập nhật hoặc cài đặt gói package PHP mới, bạn cần chạy lệnh cài đặt **bên trong container**: ```bash docker compose -f docker/docker-compose.yml exec app composer install ``` ### 4.2. Khi cập nhật giao diện (CSS / JS / Tailwind classes mới) Do Docker container không cài Node.js, bạn cần chạy các lệnh compile frontend trực tiếp **ở máy thật (host)**: - **Chạy chế độ phát triển (Hot Reload):** ```bash npm run dev ``` - **Build production tĩnh:** ```bash npm run build ``` ### 4.3. Khi cập nhật Database (Migrations) Để cập nhật cơ sở dữ liệu khi có migrations mới: ```bash docker compose -f docker/docker-compose.yml exec app php artisan migrate ``` ### 4.4. Khi chỉnh sửa file `.env` hoặc `.env.app` Bạn cần khởi động lại container để cập nhật biến môi trường mới và tiến hành xóa cache cấu hình: ```bash # 1. Restart container app docker compose -f docker/docker-compose.yml restart app # 2. Xóa cache cấu hình trong container docker compose -f docker/docker-compose.yml exec app php artisan config:clear ``` --- ## 5. Các lệnh tiện ích khác - **Truy cập vào Bash của container app:** ```bash docker compose -f docker/docker-compose.yml exec app bash ``` - **Xem log Laravel thời gian thực:** ```bash docker compose -f docker/docker-compose.yml exec app tail -f storage/logs/laravel.log ``` - **Dọn dẹp toàn bộ cache của Laravel:** ```bash docker compose -f docker/docker-compose.yml exec app php artisan optimize:clear ``` - **Dừng các container:** ```bash docker compose -f docker/docker-compose.yml down ``` docker compose -f docker/docker-compose.yml exec app php artisan key:generate