Installation — ติดตั้งบนเครื่อง dev / staging
Setup สมบูรณ์ — สำหรับติดตั้งครั้งแรกหรือทำ environment ใหม่
เครื่องต้องมีอะไรบ้าง
| Software | เวอร์ชันต่ำสุด | ใช้ทำอะไร |
|---|---|---|
| Node.js | 20 LTS | รัน api + web + mobile |
| npm | 10+ | ติดตั้ง package |
| Docker Desktop | 24+ | PostgreSQL + Redis |
| Git | ใด ๆ | clone repo |
| (Mac) Xcode | ล่าสุด | iOS simulator |
| (Win/Linux) Android Studio | ล่าสุด | Android emulator |
node -v # ≥ v20
docker -v
git --version
Step 1 — เตรียม env
cd ecommerce
cp .env.example .env
แก้ .env ที่ root:
POSTGRES_USER=ecommerce
POSTGRES_PASSWORD=<password-แข็งแรง>
POSTGRES_DB=ecommerce
POSTGRES_PORT=5432
REDIS_PORT=6379
API_PORT=3000
JWT_ACCESS_SECRET=<openssl rand -hex 32>
JWT_REFRESH_SECRET=<openssl rand -hex 32>
CORS_ORIGINS=http://localhost:3001
WEB_PORT=3001
NUXT_PUBLIC_API_BASE=http://localhost:3000/api/v1
NUXT_PUBLIC_APP_NAME=YourShop
💡 Generate JWT secret ที่ปลอดภัย:
openssl rand -hex 32
# ผลลัพธ์ปรากฏ — copy ไปใส่ใน .env
Step 2 — สตาร์ทฐานข้อมูล
docker compose up -d postgres redis
docker compose ps # ตรวจสถานะ
ควรเห็น:
ecommerce-postgres Up (healthy)
ecommerce-redis Up (healthy)
Step 3 — Install + รัน API
cd ecommerce-api
cp .env.example .env
npm install
npx prisma migrate dev --name init
npx prisma db seed
npm run start:dev
✅ พร้อมใช้ที่:
- API:
http://localhost:3000/api/v1 - Swagger:
http://localhost:3000/docs
Step 4 — Install + รัน Web
เปิด terminal ใหม่:
cd ecommerce-web
cp .env.example .env
npm install --legacy-peer-deps
npm run dev
✅ พร้อมใช้ที่ http://localhost:3001
Step 5 — (option) Install + รัน Mobile
cd ecommerce-mobile
cp .env.example .env
แก้ .env:
EXPO_PUBLIC_API_BASE=http://<LAN_IP>:3000/api/v1
หา LAN IP:
- macOS:
ipconfig getifaddr en0 - Win:
ipconfig→ IPv4 Address - Linux:
hostname -I
แล้ว:
npm install
npx expo start
- กด
i→ iOS Simulator - กด
a→ Android Emulator - scan QR ด้วยแอป Expo Go บนมือถือจริง (ต่อ Wi-Fi เดียวกัน)
ตรวจว่าทุกอย่างทำงาน
# API health
curl http://localhost:3000/api/v1/health
# Web SSR
curl -I http://localhost:3001/ # 200 OK
# Database
docker compose exec postgres pg_isready
Restart / Stop
# หยุด dev server: Ctrl+C ใน terminal แต่ละตัว
# หยุด database (ข้อมูลยังอยู่)
docker compose down
# ลบทุกอย่างเริ่มใหม่
docker compose down -v
rm -rf ecommerce-api/node_modules ecommerce-web/node_modules
ปัญหาที่เจอบ่อย
“ERESOLVE could not resolve” ตอน npm install web
ใช้:
npm install --legacy-peer-deps
Port ถูกใช้
แก้ใน root .env:
API_PORT=4000
WEB_PORT=4001
Prisma migration ค้าง / error
cd ecommerce-api
rm -rf prisma/migrations
npx prisma migrate dev --name init
Database connection refused
docker compose ps
# ถ้าไม่มี postgres หรือ unhealthy:
docker compose down -v
docker compose up -d postgres redis
Mobile: “Network request failed”
อย่าใช้ localhost ใน .env ของ mobile — ใช้ LAN IP จริงของเครื่อง dev
หลายสภาพแวดล้อม
ระบบรองรับ:
| Env | ไฟล์ env | ใช้ทำอะไร |
|---|---|---|
| development | .env.development |
dev บนเครื่อง local |
| staging | .env.staging |
ทดสอบก่อน production |
| production | .env.production |
server จริง |
API จะอ่าน env ตาม NODE_ENV:
NODE_ENV=staging npm run start
ขั้นต่อไป
- ตั้งค่าร้านครั้งแรก → 03 — Store Setup
- ปรับแบรนด์ → 07 — Customization
