2026-05-18 08:39:57 +07:00
|
|
|
# Stage 1: Builder
|
2026-05-18 08:53:44 +07:00
|
|
|
FROM oven/bun:alpine AS builder
|
2026-05-18 08:39:57 +07:00
|
|
|
|
|
|
|
|
WORKDIR /usr/src/app
|
|
|
|
|
|
2026-07-05 22:06:52 +07:00
|
|
|
# Install dependencies (devDependencies included for build)
|
|
|
|
|
COPY package.json tsconfig.json ./
|
2026-05-18 08:39:57 +07:00
|
|
|
RUN bun install
|
|
|
|
|
|
2026-07-05 22:06:52 +07:00
|
|
|
# Copy source
|
2026-05-18 08:39:57 +07:00
|
|
|
COPY src ./src
|
|
|
|
|
|
2026-07-05 22:06:52 +07:00
|
|
|
# Build (lint is run locally before deploy)
|
2026-05-18 08:39:57 +07:00
|
|
|
RUN bun run build
|
|
|
|
|
|
|
|
|
|
# Stage 2: Runner
|
2026-05-18 08:53:44 +07:00
|
|
|
FROM oven/bun:slim AS runner
|
2026-05-18 08:39:57 +07:00
|
|
|
|
|
|
|
|
WORKDIR /usr/src/app
|
|
|
|
|
|
|
|
|
|
# Copy built files, schema, and package.json
|
|
|
|
|
COPY --from=builder /usr/src/app/dist/index.js ./dist/index.js
|
2026-05-18 19:46:21 +07:00
|
|
|
COPY --from=builder /usr/src/app/dist/migrate.js ./dist/migrate.js
|
2026-07-07 00:49:45 +07:00
|
|
|
COPY --from=builder /usr/src/app/src/home.html ./home.html
|
2026-05-18 08:39:57 +07:00
|
|
|
COPY schema.sql ./
|
|
|
|
|
COPY package.json ./
|
|
|
|
|
|
|
|
|
|
# Expose port
|
|
|
|
|
EXPOSE 3000
|
|
|
|
|
|
|
|
|
|
# Start server
|
|
|
|
|
CMD ["bun", "dist/index.js"]
|