From 0900edab6520d2b4bceaf1cf23bdb4f58dd757db Mon Sep 17 00:00:00 2001 From: brother7 <7brother7@gmail.com> Date: Thu, 23 Jul 2026 15:57:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0dockerfile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .dockerignore | 14 +++++++++++ Dockerfile | 53 +++++++++++++++++++++++++++++++++++++++++ docker/admin.nginx.conf | 11 +++++++++ 3 files changed, 78 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 docker/admin.nginx.conf diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..70b6d23 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,14 @@ +.git +.gitignore +.env +.env.* +!.env.example +node_modules +**/node_modules +dist +**/dist +.taro +**/.taro +coverage +*.log +.DS_Store diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..7b2d7c7 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,53 @@ +FROM node:22-bookworm-slim AS dependencies + +WORKDIR /app + +COPY package.json package-lock.json ./ +COPY apps/api/package.json apps/api/package.json +COPY apps/admin/package.json apps/admin/package.json +COPY apps/miniprogram/package.json apps/miniprogram/package.json +RUN npm ci + +FROM dependencies AS api-builder + +COPY apps/api apps/api +RUN npm run build:api \ + && npm prune --omit=dev + +FROM node:22-bookworm-slim AS api + +ENV NODE_ENV=production +WORKDIR /app + +RUN apt-get update \ + && apt-get install -y --no-install-recommends openssl \ + && rm -rf /var/lib/apt/lists/* + +COPY --from=api-builder /app/package.json /app/package-lock.json ./ +COPY --from=api-builder /app/node_modules ./node_modules +COPY --from=api-builder /app/apps/api/package.json ./apps/api/package.json +COPY --from=api-builder /app/apps/api/node_modules ./apps/api/node_modules +COPY --from=api-builder /app/apps/api/dist ./apps/api/dist +COPY --from=api-builder /app/apps/api/prisma ./apps/api/prisma + +USER node +EXPOSE 4000 + +CMD ["node", "apps/api/dist/index.js"] + +FROM dependencies AS admin-builder + +ARG VITE_API_BASE_URL=http://localhost:4000 +ENV VITE_API_BASE_URL=$VITE_API_BASE_URL + +COPY apps/admin apps/admin +RUN npm run build:admin + +FROM nginx:1.28-alpine AS admin + +COPY docker/admin.nginx.conf /etc/nginx/conf.d/default.conf +COPY --from=admin-builder /app/apps/admin/dist /usr/share/nginx/html + +EXPOSE 80 + +FROM api AS runtime diff --git a/docker/admin.nginx.conf b/docker/admin.nginx.conf new file mode 100644 index 0000000..3aa17e6 --- /dev/null +++ b/docker/admin.nginx.conf @@ -0,0 +1,11 @@ +server { + listen 80; + server_name _; + + root /usr/share/nginx/html; + index index.html; + + location / { + try_files $uri $uri/ /index.html; + } +}