Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. # base image
  2. FROM node:22-alpine3.21 AS base
  3. LABEL maintainer="takatost@gmail.com"
  4. # if you located in China, you can use aliyun mirror to speed up
  5. # RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
  6. RUN apk add --no-cache tzdata
  7. RUN corepack enable
  8. ENV PNPM_HOME="/pnpm"
  9. ENV PATH="$PNPM_HOME:$PATH"
  10. # install packages
  11. FROM base AS packages
  12. WORKDIR /app/web
  13. COPY package.json .
  14. COPY pnpm-lock.yaml .
  15. # Use packageManager from package.json
  16. RUN corepack install
  17. # if you located in China, you can use taobao registry to speed up
  18. # RUN pnpm install --frozen-lockfile --registry https://registry.npmmirror.com/
  19. RUN pnpm install --frozen-lockfile
  20. # build resources
  21. FROM base AS builder
  22. WORKDIR /app/web
  23. COPY --from=packages /app/web/ .
  24. COPY . .
  25. ENV NODE_OPTIONS="--max-old-space-size=4096"
  26. RUN pnpm build:docker
  27. # production stage
  28. FROM base AS production
  29. ENV NODE_ENV=production
  30. ENV EDITION=SELF_HOSTED
  31. ENV DEPLOY_ENV=PRODUCTION
  32. ENV CONSOLE_API_URL=http://127.0.0.1:5001
  33. ENV APP_API_URL=http://127.0.0.1:5001
  34. ENV MARKETPLACE_API_URL=https://marketplace.dify.ai
  35. ENV MARKETPLACE_URL=https://marketplace.dify.ai
  36. ENV PORT=3000
  37. ENV NEXT_TELEMETRY_DISABLED=1
  38. ENV PM2_INSTANCES=2
  39. # set timezone
  40. ENV TZ=UTC
  41. RUN ln -s /usr/share/zoneinfo/${TZ} /etc/localtime \
  42. && echo ${TZ} > /etc/timezone
  43. WORKDIR /app/web
  44. COPY --from=builder /app/web/public ./public
  45. COPY --from=builder /app/web/.next/standalone ./
  46. COPY --from=builder /app/web/.next/static ./.next/static
  47. COPY docker/entrypoint.sh ./entrypoint.sh
  48. # global runtime packages
  49. RUN pnpm add -g pm2 \
  50. && mkdir /.pm2 \
  51. && chown -R 1001:0 /.pm2 /app/web \
  52. && chmod -R g=u /.pm2 /app/web
  53. ARG COMMIT_SHA
  54. ENV COMMIT_SHA=${COMMIT_SHA}
  55. USER 1001
  56. EXPOSE 3000
  57. ENTRYPOINT ["/bin/sh", "./entrypoint.sh"]