2026-07-30 11:23:50 +08:00
|
|
|
FROM node:22-alpine
|
|
|
|
|
|
|
|
|
|
# 统一时区为东八区
|
|
|
|
|
ENV TZ=Asia/Shanghai
|
|
|
|
|
RUN apk add --no-cache tzdata && \
|
|
|
|
|
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
|
|
|
|
|
echo "Asia/Shanghai" > /etc/timezone
|
|
|
|
|
|
|
|
|
|
WORKDIR /app
|
|
|
|
|
|
|
|
|
|
# Create logs directory
|
|
|
|
|
RUN mkdir -p /app/logs
|
|
|
|
|
|
2026-07-30 13:56:31 +08:00
|
|
|
# Install dependencies (including devDependencies for build)
|
2026-07-30 11:23:50 +08:00
|
|
|
COPY package.json pnpm-lock.yaml ./
|
2026-07-30 13:56:31 +08:00
|
|
|
RUN corepack enable pnpm && pnpm install --frozen-lockfile
|
2026-07-30 11:23:50 +08:00
|
|
|
|
|
|
|
|
# Copy application code
|
2026-07-30 13:56:31 +08:00
|
|
|
COPY tsconfig.json drizzle.config.ts ./
|
2026-07-30 11:23:50 +08:00
|
|
|
COPY src/ ./src/
|
|
|
|
|
|
2026-07-30 13:56:31 +08:00
|
|
|
# Build TypeScript → dist/
|
|
|
|
|
RUN pnpm build
|
|
|
|
|
|
|
|
|
|
# Remove devDependencies after build
|
|
|
|
|
RUN pnpm prune --prod
|
|
|
|
|
|
2026-07-30 11:23:50 +08:00
|
|
|
# Expose port
|
|
|
|
|
EXPOSE 8000
|
|
|
|
|
|
2026-07-30 13:56:31 +08:00
|
|
|
# Run the compiled application
|
|
|
|
|
CMD ["node", "--conditions", "@zod/source", "dist/app.js"]
|