From fde9105834c8d6f4d3ee959c83feae4dc86d0223 Mon Sep 17 00:00:00 2001 From: AnhAnNek Date: Wed, 1 Jul 2026 22:05:48 +0700 Subject: [PATCH] conf: docker --- docker/README.md | 25 +++++++++++++++++-------- docker/env/.env.example | 0 docker/php/entrypoint.sh | 5 +++++ 3 files changed, 22 insertions(+), 8 deletions(-) delete mode 100644 docker/env/.env.example diff --git a/docker/README.md b/docker/README.md index 26aee84..2af5cf3 100644 --- a/docker/README.md +++ b/docker/README.md @@ -50,38 +50,46 @@ 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). +- 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):** + +- **Chạy chế độ phát triển (Hot Reload):** ```bash npm run dev ``` -* **Build production tĩnh:** +- **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 @@ -94,20 +102,21 @@ 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:** +- **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:** +- **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:** +- **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:** +- **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 diff --git a/docker/env/.env.example b/docker/env/.env.example deleted file mode 100644 index e69de29..0000000 diff --git a/docker/php/entrypoint.sh b/docker/php/entrypoint.sh index 468dcee..065bcf7 100644 --- a/docker/php/entrypoint.sh +++ b/docker/php/entrypoint.sh @@ -16,4 +16,9 @@ touch storage/logs/laravel.log storage/logs/query.log chmod 666 storage/logs/laravel.log storage/logs/query.log chmod -R 777 storage bootstrap/cache +# Tạo symlink cho storage nếu chưa có (để public file ảnh, upload,...) +if [ ! -L "public/storage" ]; then + php artisan storage:link +fi + exec "$@"