- pnpm 11 (brew/corepack) errors 'ERR_PNPM_IGNORED_BUILDS: esbuild ignored' even with onlyBuiltDependencies; npm ci handles esbuild cleanly - Moreminimore-astroreal uses npm ci + npm run build (proven on EasyPanel) - Add esbuild as direct dep, generate package-lock.json, remove pnpm files - Dockerfile: npm ci -> npm run build -> node server.js (port 4321) - Verified: npm ci + npm run build produce dist (40 pages) successfully
มิตซูชัยพร สมุทรสาคร — Astro + Express (static site)
เว็บโคลนของ www.mitsuthailand.com (บริษัท มิตซูชัยพร จำกัด ศูนย์มิตซูบิชิ สมุทรสาคร)
สร้างเป็น Astro static site ที่ serve ด้วย Node/Express (server.js) — pattern
เดียวกับ moreminimore-astroreal ที่ deploy บน EasyPanel ผ่านแล้ว
Content ต้นฉบับ clone ลงมาครบ (หน้า + ภาพ + script) และ URL ทั้งหมดเป็น relative — เปลี่ยนโดเมนได้โดยไม่ต้องแก้ไฟล์
📁 โครงสร้าง
.
├── public/ ← หน้า HTML ต้นฉบับ (Astro copy ตรง → dist/)
│ ├── index.html ← หน้าแรก (เหมือนต้นฉบับ)
│ ├── catalog/item/… ← รายการสินค้า (10 รุ่น + request-form)
│ ├── catalog/keyword/… ← หน้า keyword
│ ├── catalog/brand|category|e-catalog|search
│ ├── about-us/ contactus/ footer/ rfq/
│ ├── sites/ core/ themes/ ← CSS/JS (mirror โครงสร้างเดิม)
│ └── assets/external/ ← รูปจาก media.yellowpages.co.th (โหลดมาแล้ว)
├── src/
│ ├── layouts/Base.astro ← Astro layout
│ └── pages/example.astro ← ตัวอย่างหน้า Astro component
├── server.js ← Express: serve dist/ + inject env (port 4321)
├── astro.config.mjs, package.json
├── Dockerfile ← node build → node server.js
└── .env.example (ตัวอย่าง env)
🚀 Deploy (Docker / EasyPanel)
docker build -t mitsu-chaiyaporn .
docker run -d -p 8080:4321 mitsu-chaiyaporn
EasyPanel: สร้าง Service แบบ Dockerfile → repo นี้ → container port = 4321 → deploy
⚠️ สำคัญ: ใช้
4321(ไม่ใช่ 80) — pattern เดียวกับ moreminimore-astroreal ที่ deploy ผ่านบน EasyPanel แล้ว
🧱 ทำไมหน้า content อยู่ใน public/ (ไม่ใช่ src/pages)
หน้าที่ clone มาเป็น HTML ของ Drupal ดิบ — ถ้าใส่ใน src/pages/ Astro จะพยายาม
parse ผ่าน ultrahtml และพัง (HTML ไม่สมบูรณ์ของ Drupal)
เลยวางใน public/ → Astro copy ตรงๆ ไป dist/ → output เหมือนต้นฉบับ 100%
server.js ใช้ Express serve dist/ + inject environment variables ลง HTML ตอนรัน
(แทนที่ ${GA_ID} ${FORM_EMAIL} ${GMAP_EMBED})
อยากแก้หน้าเป็น Astro component: ย้าย HTML ออกจาก public/ → สร้าง src/pages/…astro → build
ดู src/pages/example.astro + src/layouts/Base.astro
🔑 Environment Variables
| ตัวแปร | ค่า default | ความหมาย |
|---|---|---|
PORT |
4321 |
port ที่ Express ฟัง |
GA_ID |
(ว่าง=ปิด GA) | Google Analytics / GTM ID |
FORM_EMAIL |
mail@mitsuchaiyaporn.com |
อีเมลรับฟอร์ม RFQ/ติดต่อ (FormSubmit) |
GMAP_LAT / GMAP_LNG |
13.557…/100.289… |
พิกัดแผนที่ (แบบฟรี ไม่ต้อง API key) |
GMAP_EMBED |
(จาก lat/lng) | URL map เต็ม (override) |
EasyPanel: Service → Environment → เพิ่มตัวแปร → Redeploy
docker run --env "GA_ID=G-XXXX" --env "FORM_EMAIL=a@b.com" -p 8080:4321 mitsu-chaiyaporn
📞 ข้อมูลติดต่อ
- โทร: 034-836-738 ต่อ 9 / 034-422-230 · Line: @823bhcbq · FB: facebook.com/mitsuchaiyaporn
- ที่อยู่: 923/249 ถนนเอกชัย ต.มหาชัย อ.เมืองสมุทรสาคร 74000
- เปิด: ศูนย์บริการ จ-ส 08:00-17:00 / ฝ่ายขาย ทุกวัน 08:00-17:00