# Use Bun base image for builder FROM oven/bun:1-alpine AS builder WORKDIR /app # Copy package files COPY package*.json ./ COPY bun.lock* ./ # Install dependencies with Bun RUN bun install # Copy source files COPY . . # Set environment variables for build ENV VITE_API_URL=http://localhost/api ENV VITE_WS_URL=ws://localhost/ws ENV VITE_STREAM_PORT=8088 # Nakama game server config ARG VITE_NAKAMA_SERVER_KEY=defaultkey ARG VITE_NAKAMA_HOST=localhost ARG VITE_NAKAMA_PORT=80 ARG VITE_NAKAMA_USE_SSL=false ENV VITE_NAKAMA_SERVER_KEY=${VITE_NAKAMA_SERVER_KEY} ENV VITE_NAKAMA_HOST=${VITE_NAKAMA_HOST} ENV VITE_NAKAMA_PORT=${VITE_NAKAMA_PORT} ENV VITE_NAKAMA_USE_SSL=${VITE_NAKAMA_USE_SSL} # Build the application RUN bun run build # Production stage - can still use Bun FROM oven/bun:1-alpine WORKDIR /app # Copy built application and lockfile COPY --from=builder /app/build ./build COPY --from=builder /app/package*.json ./ COPY --from=builder /app/bun.lock* ./ # Install production dependencies only RUN bun install --production # Expose port EXPOSE 3000 # Set environment to production ENV NODE_ENV=production # Run with Bun CMD ["bun", "run", "build/index.js"]