tritue.edu.vn


Chạy Laravel + Docker + Vite HMR để nhiều máy cùng LAN truy cập

Đây là quy trình hoàn chỉnh để chạy Laravel + Docker + Vite HMR cho nhiều máy trong LAN.

Bạn hoàn toàn có thể cấu hình dự án để chạy nội bộ mà không cần thuê VPS.



Kiểm tra IP máy chạy Docker

Copy
         

hostname -I

VD kết quả ra: 192.168.1.13 172.22.0.1 172.17.0.1

Thì chọn IP LAN: 192.168.1.13; không dùng các IP docker 172 kia


Kiểm tra Docker mở port ra ngoài

Copy
         

docker ps --format "table {{.Names}}\t{{.Ports}}"

- Phải thấy kết quả:
quanlykho_nginx   0.0.0.0:8555->80/tcp
quanlykho_app     0.0.0.0:5262->5173/tcp
- Tức là:
Laravel chạy cổng: 8555
Vite HMR: 5262


Kiểm tra project được mount vào container chưa?

Copy
         

docker inspect quanlykho_app | grep Mounts -A 20

- phải thấy:

Source: /data/projects/quanlykho
Destination: /var/www
- tức là:
Sửa file trên máy thật

Container thấy ngay

Không cần copy file
Không cần build image


Cấu hình APP_URL trong .env

Copy
         

APP_URL=http://192.168.1.13:8555 thay bằng ip máy của bạn)


Cấu hình vite.config.js

Copy
         

export default defineConfig({
    plugins: [
        laravel({
            input: [
                'resources/css/app.css',
                'resources/js/app.js'
            ],
            refresh: true,
        }),
    ],

    server: {
        host: '0.0.0.0',
        port: 5173,

        hmr: {
            host: '192.168.1.13',
            clientPort: 5262,
            protocol: 'ws',
        },
    },
});


Chạy vite (nhớ chạy docker compose up -d trước)

Copy
         

docker exec -it quanlykho_app npm run dev -- --host 0.0.0.0


Mở máy khác trong cùng LAN, truy cập: 192.168.1.13:8555

Copy
         

truy cập: 192.168.1.13:8555

Kết quả:

- Sửa code trên máy Ubuntu

- Máy Ubuntu tự reload

- Máy khác trong LAN tự reload

- Điện thoại cùng Wi-Fi cũng có thể tự reload

- Không cần deploy VPS để test giao diện nữa.




Link chia sẻ bài viết
Copy
            https://tritue.edu.vn/tuecode/tracnghiem30/site/data/YVdRc01qVXlMRjl5YjNWMFpTeGlZV2wyYVdWMEwzQnZjM1F2ZG1sbGR3PT0%3D