Deploy astro with kamal
จะว่าไป Kamal ถูกพัฒนาขึ้นมาเพื่อใช้สำหรับ deploy เว็บแอพไปยัง VPS ก็ได้ แน่นอนว่ามันใช้กับ Rails ได้อยู่แล้วแหละ ดังนั้นในตัวอย่างนี้เราจะลองนำมาใช้ deploy เจ้า Astro กันหน่อย
-
เตรียมความพร้อมของ VPS ซึ่งก็ต้องมั่นใจว่าได้ติดตั้ง ssh และ Docker ให้เรียบร้อย
-
สร้างโปรเจ็ค Astro และติดตั้ง adaptor สำหรับ deploy ก็ขึ้นอยู่ว่าโปรเจ็คที่รันเป็น Static หรือ SSR
-
สร้าง Dockerfile ของโปรเจ็ค
FROM node:21-alpine AS base RUN apk add curl RUN corepack enable pnpm WORKDIR /app COPY package.json pnpm-lock.yaml ./ FROM base as prod-deps RUN pnpm install --production FROM base as build-deps RUN pnpm install --production=false FROM build-deps as build COPY . . RUN pnpm run build FROM base as runtime COPY --from=prod-deps /app/node_modules ./node_modules COPY --from=build /app/dist ./dist ENV HOST=0.0.0.0 ENV PORT=3000 EXPOSE 3000 CMD ["node", "./dist/server/entry.mjs"]
-
ติดตั้ง Kamal และกำหนด config เพื่อใช้ในการติดตั้ง Astro
$ gem install kamal $ kamal init
-
กำหนดค่าต่างๆ ใน
config/deploy.yml
service: astro-kamal image: karn18/web servers: - 45.32.50.132 registry: username: karn18 password: - KAMAL_REGISTRY_PASSWORD traefik: args: entrypoints.web.address: ':80' healthcheck: path: /health port: 3000 builder: multiarch: false
-
จากนั้นก็รันคำสั่ง
kamal setup
รออีกสักแป้บเว็บของเราก็จะอัพขึ้นไปบน VPS และสามารถเข้าผ่านไอพีได้