- 更新 .env.local 中的域名配置 - 更新 infra/deploy/.env.local - 更新 compose.local.yaml 中的环境变量 - 更新 admin-web 构建参数 VITE_API_BASE_URL - 更新小程序 app.ts 中的 apiBaseUrl
46 lines
2.8 KiB
Docker
46 lines
2.8 KiB
Docker
FROM node:24.13.0-alpine AS build
|
|
WORKDIR /app
|
|
RUN corepack enable
|
|
RUN npm config set registry https://registry.npmmirror.com && pnpm config set registry https://registry.npmmirror.com
|
|
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml tsconfig.base.json ./
|
|
COPY apps/api/package.json apps/api/package.json
|
|
COPY packages/contracts/package.json packages/contracts/package.json
|
|
RUN pnpm install --frozen-lockfile
|
|
COPY . .
|
|
ENV DATABASE_URL="mysql://lehuo:***@mysql:3306/lehuo"
|
|
RUN cd apps/api && pnpm run build
|
|
|
|
FROM node:24.13.0-alpine
|
|
WORKDIR /app
|
|
RUN apk add --no-cache tini
|
|
# Copy all node_modules from build stage
|
|
COPY --from=build /app/node_modules ./node_modules
|
|
COPY --from=build /app/apps/api/node_modules ./apps/api/node_modules
|
|
COPY --from=build /app/packages/contracts/node_modules ./packages/contracts/node_modules
|
|
# Copy built artifacts
|
|
COPY --from=build /app/apps/api/dist ./apps/api/dist
|
|
COPY --from=build /app/apps/api/prisma ./apps/api/prisma
|
|
COPY --from=build /app/apps/api/src/generated ./apps/api/src/generated
|
|
COPY --from=build /app/packages/contracts/dist ./packages/contracts/dist
|
|
# Create @lehuo/contracts module in node_modules
|
|
RUN mkdir -p /app/node_modules/@lehuo/contracts && \
|
|
find /app/packages/contracts/dist -type f -exec cp {} /app/node_modules/@lehuo/contracts/ \; && \
|
|
echo '{"name":"@lehuo/contracts","version":"1.1.0","main":"./index.js"}' > /app/node_modules/@lehuo/contracts/package.json
|
|
# Generate correct default.js for Prisma client
|
|
RUN mkdir -p /app/node_modules/.prisma/client && \
|
|
echo "'use strict';" > /app/node_modules/.prisma/client/default.js && \
|
|
echo 'Object.defineProperty(exports, "__esModule", { value: true });' >> /app/node_modules/.prisma/client/default.js && \
|
|
echo 'exports.Prisma = void 0;' >> /app/node_modules/.prisma/client/default.js && \
|
|
echo 'exports.$Enums = void 0;' >> /app/node_modules/.prisma/client/default.js && \
|
|
echo 'exports.PrismaClient = void 0;' >> /app/node_modules/.prisma/client/default.js && \
|
|
echo 'const $Class = require("/app/apps/api/dist/generated/prisma/internal/class");' >> /app/node_modules/.prisma/client/default.js && \
|
|
echo 'const Prisma = require("/app/apps/api/dist/generated/prisma/internal/prismaNamespace");' >> /app/node_modules/.prisma/client/default.js && \
|
|
echo 'exports.Prisma = Prisma;' >> /app/node_modules/.prisma/client/default.js && \
|
|
echo 'const enums = require("/app/apps/api/dist/generated/prisma/enums");' >> /app/node_modules/.prisma/client/default.js && \
|
|
echo 'exports.$Enums = enums.$Enums;' >> /app/node_modules/.prisma/client/default.js && \
|
|
echo 'exports.PrismaClient = $Class.getPrismaClientClass();' >> /app/node_modules/.prisma/client/default.js
|
|
ENTRYPOINT ["/sbin/tini", "--"]
|
|
CMD ["node", "apps/api/dist/main.js"]
|
|
ENV NODE_ENV=production
|
|
EXPOSE 3000
|