diff --git a/Dockerfile b/Dockerfile index 6f7547b21..61b501459 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,40 +1,38 @@ -FROM node:18-alpine AS base +ARG RESTY_IMAGE_BASE="node" +ARG RESTY_IMAGE_TAG="18-alpine" -FROM base AS deps +FROM ${RESTY_IMAGE_BASE}:${RESTY_IMAGE_TAG} AS base +ENV TZ=Asia/Shanghai -RUN apk add --no-cache libc6-compat - -WORKDIR /app - -COPY package.json yarn.lock ./ - -RUN yarn install - -FROM base AS builder - -RUN apk update && apk add --no-cache git - -ENV OPENAI_API_KEY="" -ENV CODE="" +ARG OPENAI_API_KEY +ARG CODE ARG DOCKER=true +ENV OPENAI_API_KEY="${OPENAI_API_KEY}" +ENV CODE="${CODE}" +ENV DOCKER="${DOCKER}" + +FROM ${RESTY_IMAGE_BASE}:${RESTY_IMAGE_TAG} AS deps +RUN apk add --no-cache libc6-compat +WORKDIR /app +COPY package.json yarn.lock ./ +RUN yarn install + + +FROM base AS builder 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=deps /app/node_modules ./node_modules 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/docker-README.md b/docker-README.md new file mode 100644 index 000000000..7b84e0bdb --- /dev/null +++ b/docker-README.md @@ -0,0 +1,49 @@ +## 使用docker,运行ChatGPT Next Web + +```bash +docker run -d -p 3000:3000 \ + -e OPENAI_API_KEY="" \ + -e CODE="" \ + --name chatgpt_next_web \ + yidadaa/chatgpt-next-web +``` + + +## 更新ChatGPT Next Web + +从dockerhub更新ChatGPT Next Web +```bash +docker pull yidadaa/chatgpt-next-web +``` + +## 本地构建ChatGPT Next Web + +如何使用docker,在本地构建ChatGPT Next Web的镜像 + +### 普通构建 +```bash +docker build -t yidadaa/chatgpt-next-web . +``` + +### 参数级构建 +```bash +docker build -t yidadaa/chatgpt-next-web \ + --build-arg OPENAI_API_KEY=$(OPENAI_API_KEY) \ + --build-arg CODE=$(CODE) \ + . +``` + + +## 使用docker compose构建 +```bash +docker compose build +``` + + +## 使用docker composey运行 + +修改`docker-compose.env`的环境变量,再执行 + +```bash +docker compose up -d +``` diff --git a/docker-compose.env b/docker-compose.env new file mode 100644 index 000000000..9196246fe --- /dev/null +++ b/docker-compose.env @@ -0,0 +1,3 @@ +OPENAI_API_KEY= +CODE= +DOCKER=true diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 000000000..c88b5dcbf --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,14 @@ +version: "3" + +services: + chatgpt-next-web: + build: + dockerfile: Dockerfile + context: . + container_name: chatgpt_next_web + image: yidadaa/chatgpt-next-web:latest + ports: + - 0.0.0.0:3000:3000 + env_file: + - docker-compose.env + restart: unless-stopped