Compare commits

8 Commits

Author SHA1 Message Date
ChenZhaoYu
405aeaa2a5 chore: version 2.3.3 2023-02-16 21:03:12 +08:00
ChenZhaoYu
fd28468778 chore: build_docker repositories 2023-02-16 20:30:49 +08:00
Stephen Ni
4128d319ed docs: polish docker run (#44)
* docs: polish docker run

* Update README.md

---------

Co-authored-by: Redon <790348264@qq.com>
2023-02-16 20:29:46 +08:00
Jerry Wang
4a06b3943c 优化 docker 构建的镜像文件大小,添加自动化构建 (#42)
* perf: optimize docker image

* perf: shrink image size

* fix: build docker image

* fix: docker image namespace

* docs: add docker compose example

* docs: fix docker compose example

* docs: fix again :)

* docs: and again.....
2023-02-16 20:25:29 +08:00
ChenZhaoYu
77cdcb7798 chore: 添加贡献列表 2023-02-16 14:17:03 +08:00
ChenZhaoYu
ee542a01f7 chore: eslint 依赖报错 2023-02-16 14:03:40 +08:00
ChenZhaoYu
30372c2e70 chore: update README 2023-02-16 13:42:19 +08:00
Void
6646695849 Add Dockerfile (#33)
* add Dockerfile

* update Readme.md

* Fixed : Docker log file

* Update vite.config.ts
2023-02-16 13:39:07 +08:00
11 changed files with 148 additions and 21 deletions

6
.dockerignore Normal file
View File

@@ -0,0 +1,6 @@
node_modules
Dockerfile
.git
.husky
.github
.vscode

37
.github/workflows/build_docker.yml vendored Normal file
View File

@@ -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: chenzhaoyu94/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

View File

@@ -23,7 +23,9 @@
"axios", "axios",
"bumpp", "bumpp",
"chatgpt", "chatgpt",
"chenzhaoyu",
"commitlint", "commitlint",
"dockerhub",
"esno", "esno",
"GPTAPI", "GPTAPI",
"iconify", "iconify",

View File

@@ -1,3 +1,15 @@
## v2.3.3
`2023-02-16`
### Feature
- 添加 `README` 部份说明和贡献列表
- 添加 `docker` 镜像
- 添加 `GitHub Action` 自动化构建
### BugFix
- 回退依赖更新导致的 [Eslint 报错](https://github.com/eslint/eslint/issues/16896)
## v2.3.2 ## v2.3.2
`2023-02-16` `2023-02-16`

20
Dockerfile Normal file
View File

@@ -0,0 +1,20 @@
# build front-end
FROM node:lts-alpine AS builder
COPY ./ /app
WORKDIR /app
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 3002
CMD ["pnpm", "run", "start"]

View File

@@ -97,9 +97,37 @@ pnpm prod
PS: 不进行打包,直接在服务器上运行 `pnpm start` 也可 PS: 不进行打包,直接在服务器上运行 `pnpm start` 也可
## Docker build & run
[参考信息](https://github.com/Chanzhaoyu/chatgpt-web/pull/42)
```bash
docker build -t chatgpt-web .
```
## Docker compose
[Hub 地址](https://hub.docker.com/repository/docker/chenzhaoyu94/chatgpt-web/general)
```yml
version: '3'
service:
app:
image: chenzhaoyu94/chatgpt-web
ports:
- 3002:3002
environment:
OPENAI_API_KEY: xxxxxx
```
### 网页 ### 网页
根目录下运行以下命令,然后将 `dist` 文件夹复制到你的托管服务器上 根目录下运行以下命令,然后将 `dist` 文件夹复制到你的托管服务器上
[参考信息](https://cn.vitejs.dev/guide/static-deploy.html#building-the-app)
```shell ```shell
pnpm build pnpm build
``` ```
@@ -117,5 +145,15 @@ Q: 文件保存时全部爆红?
A: `vscode` 请安装项目推荐插件,或手动安装 `Eslint` 插件。 A: `vscode` 请安装项目推荐插件,或手动安装 `Eslint` 插件。
## 参与贡献
贡献之前请先阅读 [贡献指南](./CONTRIBUTING.md)
感谢所有做过贡献的人!
<a href="https://github.com/Chanzhaoyu/chatgpt-web/graphs/contributors">
<img src="https://contrib.rocks/image?repo=Chanzhaoyu/chatgpt-web" />
</a>
## License ## License
MIT © [ChenZhaoYu](./license) MIT © [ChenZhaoYu](./license)

View File

@@ -1,6 +1,6 @@
{ {
"name": "chatgpt-web", "name": "chatgpt-web",
"version": "2.3.2", "version": "2.3.3",
"private": false, "private": false,
"description": "ChatGPT Web", "description": "ChatGPT Web",
"author": "ChenZhaoYu <chenzhaoyu1994@gmail.com>", "author": "ChenZhaoYu <chenzhaoyu1994@gmail.com>",
@@ -16,6 +16,7 @@
"preview": "vite preview", "preview": "vite preview",
"build-only": "vite build", "build-only": "vite build",
"type-check": "vue-tsc --noEmit", "type-check": "vue-tsc --noEmit",
"lint": "eslint .",
"lint:fix": "eslint . --fix", "lint:fix": "eslint . --fix",
"bootstrap": "pnpm install && pnpm run common:prepare", "bootstrap": "pnpm install && pnpm run common:prepare",
"common:cleanup": "rimraf node_modules && rimraf pnpm-lock.yaml", "common:cleanup": "rimraf node_modules && rimraf pnpm-lock.yaml",

16
pnpm-lock.yaml generated
View File

@@ -1268,7 +1268,7 @@ packages:
hasBin: true hasBin: true
dependencies: dependencies:
caniuse-lite: 1.0.30001452 caniuse-lite: 1.0.30001452
electron-to-chromium: 1.4.298 electron-to-chromium: 1.4.296
node-releases: 2.0.10 node-releases: 2.0.10
update-browserslist-db: 1.0.10_browserslist@4.21.5 update-browserslist-db: 1.0.10_browserslist@4.21.5
dev: true dev: true
@@ -1724,8 +1724,8 @@ packages:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
dev: true dev: true
/electron-to-chromium/1.4.298: /electron-to-chromium/1.4.296:
resolution: {integrity: sha512-dJZurgxDeaqn90VmS23Xz+QPQQl84BxnlAfwCDFNjfEhqO2yLMDkeaDoJ1yPXAbmiqTi+hd5TpB5zi1N4hwBuQ==} resolution: {integrity: sha512-i/6Q+Y9bluDa2a0NbMvdtG5TuS/1Fr3TKK8L+7UUL9QjRS5iFJzCC3r70xjyOnLiYG8qGV4/mMpe6HuAbdJW4w==}
dev: true dev: true
/emoji-regex/8.0.0: /emoji-regex/8.0.0:
@@ -2052,7 +2052,7 @@ packages:
ci-info: 3.8.0 ci-info: 3.8.0
clean-regexp: 1.0.0 clean-regexp: 1.0.0
eslint: 8.34.0 eslint: 8.34.0
esquery: 1.4.1 esquery: 1.4.0
indent-string: 4.0.0 indent-string: 4.0.0
is-builtin-module: 3.2.1 is-builtin-module: 3.2.1
jsesc: 3.0.2 jsesc: 3.0.2
@@ -2186,7 +2186,7 @@ packages:
eslint-utils: 3.0.0_eslint@8.34.0 eslint-utils: 3.0.0_eslint@8.34.0
eslint-visitor-keys: 3.3.0 eslint-visitor-keys: 3.3.0
espree: 9.4.1 espree: 9.4.1
esquery: 1.4.1 esquery: 1.4.0
esutils: 2.0.3 esutils: 2.0.3
fast-deep-equal: 3.1.3 fast-deep-equal: 3.1.3
file-entry-cache: 6.0.1 file-entry-cache: 6.0.1
@@ -2224,8 +2224,8 @@ packages:
eslint-visitor-keys: 3.3.0 eslint-visitor-keys: 3.3.0
dev: true dev: true
/esquery/1.4.1: /esquery/1.4.0:
resolution: {integrity: sha512-3ZggxvMv5EEY1ssUVyHSVt0oPreyBfbUi1XikJVfjFiBeBDLdrb0IWoDiEwqT/2sUQi0TGaWtFhOGDD8RTpXgQ==} resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==}
engines: {node: '>=0.10'} engines: {node: '>=0.10'}
dependencies: dependencies:
estraverse: 5.3.0 estraverse: 5.3.0
@@ -4449,7 +4449,7 @@ packages:
eslint-scope: 7.1.1 eslint-scope: 7.1.1
eslint-visitor-keys: 3.3.0 eslint-visitor-keys: 3.3.0
espree: 9.4.1 espree: 9.4.1
esquery: 1.4.1 esquery: 1.4.0
lodash: 4.17.21 lodash: 4.17.21
semver: 7.3.8 semver: 7.3.8
transitivePeerDependencies: transitivePeerDependencies:

View File

@@ -23,7 +23,7 @@
"common:cleanup": "rimraf node_modules && rimraf pnpm-lock.yaml" "common:cleanup": "rimraf node_modules && rimraf pnpm-lock.yaml"
}, },
"dependencies": { "dependencies": {
"chatgpt": "^4.4.1", "chatgpt": "^4.3.2",
"dotenv": "^16.0.3", "dotenv": "^16.0.3",
"esno": "^0.16.3", "esno": "^0.16.3",
"express": "^4.18.2", "express": "^4.18.2",
@@ -35,7 +35,7 @@
"@types/node": "^18.13.0", "@types/node": "^18.13.0",
"eslint": "^8.34.0", "eslint": "^8.34.0",
"rimraf": "^4.1.2", "rimraf": "^4.1.2",
"tsup": "^6.6.3", "tsup": "^6.6.2",
"typescript": "^4.9.5" "typescript": "^4.9.5"
} }
} }

20
service/pnpm-lock.yaml generated
View File

@@ -4,18 +4,18 @@ specifiers:
'@antfu/eslint-config': ^0.35.2 '@antfu/eslint-config': ^0.35.2
'@types/express': ^4.17.17 '@types/express': ^4.17.17
'@types/node': ^18.13.0 '@types/node': ^18.13.0
chatgpt: ^4.4.1 chatgpt: ^4.3.2
dotenv: ^16.0.3 dotenv: ^16.0.3
eslint: ^8.34.0 eslint: ^8.34.0
esno: ^0.16.3 esno: ^0.16.3
express: ^4.18.2 express: ^4.18.2
isomorphic-fetch: ^3.0.0 isomorphic-fetch: ^3.0.0
rimraf: ^4.1.2 rimraf: ^4.1.2
tsup: ^6.6.3 tsup: ^6.6.2
typescript: ^4.9.5 typescript: ^4.9.5
dependencies: dependencies:
chatgpt: 4.4.1 chatgpt: 4.4.0
dotenv: 16.0.3 dotenv: 16.0.3
esno: 0.16.3 esno: 0.16.3
express: 4.18.2 express: 4.18.2
@@ -856,8 +856,8 @@ packages:
resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==}
dev: true dev: true
/chatgpt/4.4.1: /chatgpt/4.4.0:
resolution: {integrity: sha512-rccShNzq/aE4LMmwTW4IOHIAZgNRbX0KetVKRCdR4SkRXz63FWzOfu8pNbaN65gsvvXwXyRzD7W4LLDyXe4TYg==} resolution: {integrity: sha512-rS1F423hR5marIB7hvZ4KyczK9oFloWY+AR4WKIt+HLyiRgOOWv6V4olu1HvaoOayc5+A/N2WwX0SzuU1rI9Rg==}
engines: {node: '>=18'} engines: {node: '>=18'}
dependencies: dependencies:
eventsource-parser: 0.0.5 eventsource-parser: 0.0.5
@@ -1393,7 +1393,7 @@ packages:
ci-info: 3.8.0 ci-info: 3.8.0
clean-regexp: 1.0.0 clean-regexp: 1.0.0
eslint: 8.34.0 eslint: 8.34.0
esquery: 1.4.1 esquery: 1.4.0
indent-string: 4.0.0 indent-string: 4.0.0
is-builtin-module: 3.2.1 is-builtin-module: 3.2.1
jsesc: 3.0.2 jsesc: 3.0.2
@@ -1527,7 +1527,7 @@ packages:
eslint-utils: 3.0.0_eslint@8.34.0 eslint-utils: 3.0.0_eslint@8.34.0
eslint-visitor-keys: 3.3.0 eslint-visitor-keys: 3.3.0
espree: 9.4.1 espree: 9.4.1
esquery: 1.4.1 esquery: 1.4.0
esutils: 2.0.3 esutils: 2.0.3
fast-deep-equal: 3.1.3 fast-deep-equal: 3.1.3
file-entry-cache: 6.0.1 file-entry-cache: 6.0.1
@@ -1572,8 +1572,8 @@ packages:
eslint-visitor-keys: 3.3.0 eslint-visitor-keys: 3.3.0
dev: true dev: true
/esquery/1.4.1: /esquery/1.4.0:
resolution: {integrity: sha512-3ZggxvMv5EEY1ssUVyHSVt0oPreyBfbUi1XikJVfjFiBeBDLdrb0IWoDiEwqT/2sUQi0TGaWtFhOGDD8RTpXgQ==} resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==}
engines: {node: '>=0.10'} engines: {node: '>=0.10'}
dependencies: dependencies:
estraverse: 5.3.0 estraverse: 5.3.0
@@ -3296,7 +3296,7 @@ packages:
eslint-scope: 7.1.1 eslint-scope: 7.1.1
eslint-visitor-keys: 3.3.0 eslint-visitor-keys: 3.3.0
espree: 9.4.1 espree: 9.4.1
esquery: 1.4.1 esquery: 1.4.0
lodash: 4.17.21 lodash: 4.17.21
semver: 7.3.8 semver: 7.3.8
transitivePeerDependencies: transitivePeerDependencies:

11
start.sh Normal file
View File

@@ -0,0 +1,11 @@
cd ./service
nohup pnpm start > service.log &
echo "Start service complete!"
cd ..
echo "" > front.log
nohup pnpm dev > front.log &
echo "Start front complete!"
tail -f front.log