diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..314d6c36 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,44 @@ +FROM node:18-alpine AS base + +FROM base AS deps + +RUN apk add --no-cache libc6-compat + +WORKDIR /app + +COPY package.json yarn.lock* package-lock.json* ./ + +RUN \ + if [ -f yarn.lock ]; then yarn --frozen-lockfile; \ + elif [ -f package-lock.json ]; then npm ci; \ + else echo "Lockfile not found." && exit 1; \ + fi + +FROM base AS builder + +RUN apk update && apk add --no-cache git + +ENV OPENAI_API_KEY="" +ENV CODE="" +ARG DOCKER=true + +WORKDIR /app +COPY --from=deps /app/node_modules ./node_modules +COPY . . + +RUN yarn build + +FROM base AS runner +WORKDIR /app + +ENV OPENAI_API_KEY="" +ENV CODE="" + +COPY --from=builder /app/public ./public +COPY --from=builder /app/.next/standalone ./ +COPY --from=builder /app/.next/static ./.next/static +COPY --from=builder /app/.next/server ./.next/server + +EXPOSE 3000 + +CMD ["node","server.js"] diff --git a/README.md b/README.md index 0c7284bd..ae68cb32 100644 --- a/README.md +++ b/README.md @@ -129,19 +129,30 @@ Please ask ChatGPT with prompt: how to deploy nextjs project with pm2 and yarn on my ubuntu server, the build command is `yarn build`, the start command is `yarn start`, the project must start with env var named `OPENAI_API_KEY`, the port is 3000, use ngnix ``` -### Docker Deployment - -请直接询问 ChatGPT,使用下列 Prompt: +### 容器部署 Docker Deployment +1. 首先拉取镜像 +```shell +docker pull aprilnea/chatgpt-next-web ``` -如何使用 docker 部署 nextjs 项目到 ubuntu 服务器上,项目编译命令为 yarn build,启动命令为 yarn start,启动时需要设置环境变量为 OPENAI_API_KEY,端口为 3000,使用 ngnix 做反向代理 +2. 运行 +```shell +docker run -d -p 3000:3000 -e OPEN_API_KEY="" -e CODE="" aprilnea/chatgpt-next-web +``` +请在适当位置替换你的 `OPEN_API-KEY` 和 `CODE` + + +1. First, pull the image +```shell +docker pull aprilnea/chatgpt-next-web ``` -Please ask ChatGPT with prompt: +2. Run the container +```shell +docker run -d -p 3000:3000 -e OPEN_API_KEY="" -e CODE="" aprilnea/chatgpt-next-web +``` +Please replace `OPEN_API_KEY` and `CODE` with your own credentials at the appropriate locations. -``` -how to deploy nextjs project with docker on my ubuntu server, the build command is `yarn build`, the start command is `yarn start`, the project must start with env var named `OPENAI_API_KEY`, the port is 3000, use ngnix -``` ## 截图 Screenshots diff --git a/next.config.js b/next.config.js index eea258d3..fc164db9 100644 --- a/next.config.js +++ b/next.config.js @@ -14,4 +14,8 @@ const nextConfig = { } }; +if (process.env.DOCKER) { + nextConfig.output = 'standalone' +} + module.exports = nextConfig;