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

วิธีใช้งาน 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 ได้อีกด้วย ซึ่งผลที่ได้เพี้ยนไปจากตัวจริงไม่มากครับ แต่ที่ทำให้เลือกใช้งานเพราะการเพิ่มฟ้อนท์ภาษาไทย เข้าไปนั้นค่อนข้างง่ายครับ เลยจะขอมาแนะนำดังนี้

แก้ไขปัญหา Laravel+Vite redirect ไปที่ path build

  ก่อนหน้านี้ติดปัญหาเรื่องการพัฒนาเว็บแอพลิเคชันด้วย Laravel และ Vuejs โดยใช้ Vite ควบคู่ในการพัฒนา Frontend ตอนรัน npm run dev ก็ดูเหมือนจะใช้งานได้ปกติ แต่พอมาลอง build ดูปรากฏว่าตัว application คอย redirect ไปที่ path /build ตลอดเลย พอหาข้อมูล ไปๆ มาๆ ก็เจอว่าตอนที่เขียนเราใช้ router ของฝั่ง vuejs ซึ่งทำเป็น SPA const router = createRouter({     history: createWebHistory(import.meta.env.BASE_URL), }); จากโค๊ดด้านบนนี่แหละที่ มึนอยู่หลาย ชั่วโมง แก้ง่ายๆ ที่สุด คือทำแบบนี้ const router = createRouter({     history: createWebHistory(), }); เข้าใจว่า import.meta.env.BASE_URL ค่า default น่าจะเป็น /build ถ้าเอาออกจะช่วยแก้ไขปัญหาได้ แต่ยังไม่ได้ลองว่าถ้าเราไปกำหนด env ตัวนี้ขึ้นมาก็อาจจะช่วยแก้ไขปัญหาได้ด้วยหรือเปล่า? VITE_BASE_URL="/" ใครลองแล้วได้ผลมาคอมเม้นกันด้วยนะ วันนี้ไปก่อนละ

ปลดล็อคความสามารถให้กับ Sublime Text ตอนที่ 1

นานมาแล้วที่ผมเคยใช้ Dreamweaver ในการพัฒนาเว็บไซต์ตั้งแต่ CS 3 จนกระทั่งถึง CS 6 จนผมได้มาพบ Text Editor ที่ทรงพลังตัวหนึงเข้าและเกิดความประทับใจเป็นอย่างมาก จึงลองเปิดเปลี่ยนมาใช้มันดู ถ้าบอกตามความจริงแล้ว ผมเพียงแต่ใช้ตามเทรนน่ะครับ แบบเห็นคนเค้าใช้กันก็ลองใช้ดู แต่ที่ได้เห็นกับตาจริงๆ ก็คือ การโหลดโปรแกรมที่ไวในตอนเริ่ม ก่อนจะเกริ่นต่อไป ผมขอออกตัวนะครับ ว่าไม่ได้ไช่พวกคลั่ง  Sublime Text หรือจะมาบอกว่าดีกว่าตัวอื่นๆ แค่จะมานำเสนอความสามารถที่ซ่อนอยู่ สำหรับเพื่อนๆ ที่ลองใช้แล้วไม่เข้าใจว่ามันดียังไง .. เพราะความจริงก่อนหน้านั้นผมก็ใช้ Editpus หรือแม้แต่ Eclipse มาบ้างซึ่งก็ใช้ตามสถานการณ์ไม่ได้เจาะจงว่าต้อง Sublime อย่างเดียว .. สำหรับคนที่ใช้ Dreamweaver ก็อย่ากังวลครับ ไม่ได้มาบอกว่าใครที่ใช้ไม่โปร อันนี้ไม่เกี่ยวนะครับ ออกตัวไว้ให้รับทราบกันก่อน