ข้ามไปที่เนื้อหาหลัก

วิธีใช้งาน Laravel Vite บน docker ที่เตรียมมาเอง


เรื่องของเรื่องมีอยู่ว่า ถ้าหากว่าเราอยากจะลองใช้ Vite ที่ทาง Laravel เริ่มยัดเยียดมาให้ในเวอร์ชันหลังๆ น่าจะประมาณ Laravel 8+ ถ้าไม่ได้ใช้ Laravel Sail ในการรัน Local development ก็น่าที่จะติดปัญหาในเรื่องของการที่ application ที่เราเขียนมองหา Frontend server ของ Vite ไม่เจอ

GET http://127.0.0.1:5173/@vite/client net::ERR_CONNECTION_REFUSED
GET http://0.0.0.0:5173/@vite/client net::ERR_ADDRESS_INVALID

ปัญหาที่เกิดขึ้น เนื่องจากโดยค่าเริ่มต้น Vite จะผูกกับที่อยู่ localhost 127.0.0.1 ซึ่งหมายความว่าสามารถเข้าถึงได้จากภายในคอนเทนเนอร์ Docker เท่านั้น หากต้องการอนุญาตการเข้าถึงจากภายนอกคอนเทนเนอร์ คุณจะต้องผูกเข้ากับที่อยู่ IP ที่เป็น 0.0.0.0 หรือ Localhostโดยใช้เซิร์ฟเวอร์ ตัวแปรการกำหนดค่าโฮสต์ อย่างไรก็ตาม สิ่งนี้ทำให้เว็บไซต์พยายามเชื่อมต่อกับ 0.0.0.0 ซึ่งไม่ถูกต้อง หากต้องการบอกให้ส่วนหน้าใช้ localhost คุณต้องตั้งค่าเซิร์ฟเวอร์ ตัวแปร hmr.host

import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
import vue from '@vitejs/plugin-vue';

export default defineConfig({
server: {
host: '0.0.0.0',
port: 5173,
hmr: {
host: '127.0.0.1',
},
},
plugins: [
vue(),
laravel({
input: ['resources/css/app.css', 'resources/js/app.js'],
refresh: true,
}),
],
});

นอกจากนี้ ต้องไม่ลืมที่จะเปิด Port 5173 ให้กับ container ที่รัน PHP ด้วยนะครับ

version: "3.8"
name: my-laravel-project
services:
web-server:
ports:
- "80:80"
- "5173:5173" <===== เพิ่มตรงนี้

ใครที่กำลังมองหาทางออก ก็หวังว่าจะได้เจอ บทความนี้นะครับ ทุกคนจะได้ลองใช้ Vite กันจร้า

ข้อมูลที่ลอกมา https://mrzebra.co.uk/code/2023/01/16/how-to-use-laravel-vite-from-docker/

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

การเพิ่ม Font ภาษาไทยอื่นๆ เข้าไปใช้งานใน MPDF

เนื่องมาจากผมได้มีโอกาสจับงานที่ต้องแปลงหน้าเว็บให้เป็น PDF ลองๆ หาข้อมูลก็ไปเจอเจ้าตัวนี้ MPDF  ซึ่งจริงๆ แล้วก็มีให้ใช้งานอีกหลายๆ ตัว สาเหตุที่เลือกใช้งานตัวนี้เพราะมัน ค่อนข้างจะติดตั้ง และใช้งานง่าย และยังสามารถอ้างอิง CSS เข้ามาช่วยจัดหน้าตาใน PDF ได้อีกด้วย ซึ่งผลที่ได้เพี้ยนไปจากตัวจริงไม่มากครับ แต่ที่ทำให้เลือกใช้งานเพราะการเพิ่มฟ้อนท์ภาษาไทย เข้าไปนั้นค่อนข้างง่ายครับ เลยจะขอมาแนะนำดังนี้

การเขียน Force download ด้วย PHP

การทำ Force download ด้วย PHP นั้น ไม่ไช่เรื่องใหม่อะไร มีการเขียนโค้ดด้วยลักษณะนี้อยู่บ่อยๆ แต่ผมต้องนำมาแปะเป็นทริคเล็กน้อยกันตัวเองลืมครับ ประโยชน์ของมันคือในกรณีที่เราไม่สามารถเข้าไปจัดการ Apache config ได้เราสามารถใช้วิธีนี้แทนได้

มาเข้าใจ และใช้ Datatable ดึงข้อมูลแบบ Server-side ด้วย PHP, MySQL กันเถอะ

มีช่วงหนึงผมเคยนำ datatable มาพัฒนาในงานแต่เกิดปัญหาเนื่องจากมีข้อมูลขนาดใหญ่ ทำให้เกิดการโหลดในครั้งแรกที่โหลดหน้าเพจนั้นๆ เนื่องจากผมใช้ Ajax ในการโหลดข้อมูลทั้งหมดมาในครั้งเดียวด้วยจำนวนข้อมูล 1000 ขึ้น ซึ่งตอนนั้นผมคิดว่าการทำ preload น่าจะช่วยได้ แต่ว่าถ้า user เกิดเผลอไปกด refesh หรือแก้ไขข้อมูลเวลากลับมาที่หน้าข้อมูลก็ต้องโหลดใหม่อีก ทำให้ผมเลิกใช้ datatable ไปเลย เพราะคิดว่ามันคงไม่เหมาะ แต่ในความจริงแล้ว datatable ก็ได้มีสิ่งที่มาแก้ในจุดนั้นได้ ซึ่งเรียกว่า server-side โดยการที่อนุญาตให้เรา query ข้อมูลออกมาก่อนแล้วส่งมาให้ datatable อ่านข้อมูลในจำนวนที่น้อยลง หลักการก็เหมือนๆ กับบทความการทำสร้าง XML จากข้อมูลขนาดใหญ่นั่นแหละครับ แต่มีเงื่อนไขเพียงแต่ว่า ต้อง Filter และส่งข้อมูลออกมาในรูปแบบที่ตรงตามหลักของ datatable เท่านั้น ( บางครั้งเวลาเข้าไปอ่าน Document หรือดู Example จะงงๆ ว่าอะไรเยอะแยะ ) โดยวันนี้จะมาแนะนำการใช้งานแบบง่ายๆ กันเลย :D