diff --git a/.github/workflows/build_docker.yml b/.github/workflows/build_docker.yml new file mode 100644 index 0000000..75f8011 --- /dev/null +++ b/.github/workflows/build_docker.yml @@ -0,0 +1,37 @@ +name: build_docker + +on: + push: + branches: [ main ] + +jobs: + build_docker: + name: Build docker + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Docker meta + id: meta + uses: docker/metadata-action@v4 + with: + images: 0xjerry/chatgpt-web + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Login to DockerHub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Build and push + id: docker_build + uses: docker/build-push-action@v4 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + platforms: linux/amd64,linux/arm64 diff --git a/Dockerfile b/Dockerfile index 253cf70..f0b6f22 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,19 +1,20 @@ -FROM node:lts +# build front-end +FROM node:lts-alpine AS builder -# copy resource -RUN mkdir /app COPY ./ /app WORKDIR /app -# build -RUN npm install pnpm -g -RUN pnpm bootstrap -WORKDIR /app/service -RUN pnpm install +RUN npm install pnpm -g && pnpm install && pnpm run build + +# service +FROM node:lts-alpine + +COPY /service /app +COPY --from=builder /app/dist /app/public + WORKDIR /app +RUN npm install pnpm -g && pnpm install -EXPOSE 1002 EXPOSE 3002 -CMD ["/bin/bash","./start.sh"] - +CMD ["pnpm", "run", "start"] \ No newline at end of file diff --git a/README.md b/README.md index 65714fc..cbaeae0 100644 --- a/README.md +++ b/README.md @@ -109,6 +109,20 @@ docker build -t marlkiller/chatgpt-web . docker run -p 1002:1002 marlkiller/chatgpt-web ``` +## Docker compose + +```yml +version: '3' + +service: + app: + image: 0xjerry/chatgpt-web + ports: + - 3002:3002 + environment: + OPENAI_API_KEY: xxxxxx +``` + ### 网页 根目录下运行以下命令,然后将 `dist` 文件夹复制到你的托管服务器上