From da0acfe851b9a8b31fbfc000a78503e41034441c Mon Sep 17 00:00:00 2001 From: RockYang Date: Thu, 22 Jun 2023 22:14:18 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=A2=9E=E5=8A=A0=20docker-compose=20?= =?UTF-8?q?=E9=83=A8=E7=BD=B2=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 11 ----- Startup.sh | 27 ---------- docker-compose.yaml | 13 ----- docker/conf/config.toml | 17 +++++++ docker/conf/nginx/conf.d/chatgpt-plus.conf | 46 +++++++++++++++++ docker/conf/nginx/nginx.conf | 57 ++++++++++++++++++++++ docker/docker-compose.yaml | 31 ++++++++++++ docker/dockerfile-go-api | 12 +++++ docker/dockerfile-vue | 9 ++++ web/.gitignore | 1 + 10 files changed, 173 insertions(+), 51 deletions(-) delete mode 100644 Dockerfile delete mode 100644 Startup.sh delete mode 100644 docker-compose.yaml create mode 100644 docker/conf/config.toml create mode 100644 docker/conf/nginx/conf.d/chatgpt-plus.conf create mode 100644 docker/conf/nginx/nginx.conf create mode 100644 docker/docker-compose.yaml create mode 100644 docker/dockerfile-go-api create mode 100644 docker/dockerfile-vue diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index fb861e5e..00000000 --- a/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -# FROM 表示设置要制作的镜像基于哪个镜像,FROM指令必须是整个Dockerfile的第一个指令,如果指定的镜像不存在默认会自动从Docker Hub上下载。 -FROM centos:7 - -WORKDIR /usr/src/app -COPY src/bin/wechatGPT-amd64-linux /usr/src/app - -# 容器对外暴露的端口号,这里和配置文件保持一致就可以 -EXPOSE 5678 - -# 容器启动时执行的命令 -CMD ["./wechatGPT-amd64-linux"] diff --git a/Startup.sh b/Startup.sh deleted file mode 100644 index 049d6d8a..00000000 --- a/Startup.sh +++ /dev/null @@ -1,27 +0,0 @@ -# 前端 - -if ! command -v node > /dev/null; then - printf 'node is not installed.\n' - exit 1 -fi -cd web -npm install -npm run build -cd .. - -# 后端 -if ! command -v go > /dev/null; then - printf 'go is not installed.\n' - exit 1 -fi -cd src -go mod tidy -make linux -cd .. - -# Docker -if ! command -v docker > /dev/null; then - printf 'docker is not installed.\n' - exit 1 -fi -docker compose up -d \ No newline at end of file diff --git a/docker-compose.yaml b/docker-compose.yaml deleted file mode 100644 index f5225bf0..00000000 --- a/docker-compose.yaml +++ /dev/null @@ -1,13 +0,0 @@ -services: - chatgptplus: - container_name: chatgptplus - build: ./ - restart: unless-stopped - volumes: - - ./src/config.toml:/usr/src/app/config.toml - ports: - - 5678:5678 - logging: - options: - max-size: "10m" - max-file: "3" diff --git a/docker/conf/config.toml b/docker/conf/config.toml new file mode 100644 index 00000000..f53c018c --- /dev/null +++ b/docker/conf/config.toml @@ -0,0 +1,17 @@ +Listen = "0.0.0.0:5678" +ProxyURL = "http://127.0.0.1:7777" +MysqlDns = "root:12345678@tcp(192.168.3.200:3306)/chatgpt_plus?charset=utf8mb4&parseTime=True&loc=Local" + +[Session] + SecretKey = "8k0c67y2or1n7kbmn1w1c86ygqscguoktuf9t524jm64ls585z8uibpdssiy128s" + Name = "CHAT_PLUS_SESSION" + Path = "/" + Domain = "localhost" + MaxAge = 86400 + Secure = false + HttpOnly = false + SameSite = 2 + +[Manager] + Username = "admin" + Password = "admin123" diff --git a/docker/conf/nginx/conf.d/chatgpt-plus.conf b/docker/conf/nginx/conf.d/chatgpt-plus.conf new file mode 100644 index 00000000..8294cde0 --- /dev/null +++ b/docker/conf/nginx/conf.d/chatgpt-plus.conf @@ -0,0 +1,46 @@ +map $http_upgrade $connection_upgrade { + default upgrade; + 'websocket' upgrade; +} +server { +# listen 443 ssl; + listen 8080; +# server_name www.chatgpt.com; #替换成你自己的域名 + +# ssl_certificate xxx.pem; # 替换成自己的 SSL 证书 +# ssl_certificate_key xxx.key; +# ssl_session_timeout 5m; +# ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; +# ssl_protocols TLSv1 TLSv1.1 TLSv1.2; +# ssl_prefer_server_ciphers on; + + # 日志地址 + access_log /var/log/access.log; + error_log /var/log/error.log; + + index index.html; + root /var/www/app/dist; # 这里改成前端静态页面的地址 + + location / { + try_files $uri $uri/ /index.html; + + # 这里配置后端 API 的转发 + location /api/ { + proxy_http_version 1.1; + proxy_connect_timeout 300s; + proxy_read_timeout 300s; + proxy_send_timeout 12s; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection $connection_upgrade; + proxy_pass http://192.168.3.200:5678; # 这里改成后端服务的内网 IP 地址 + } + } + + # 关闭静态资源的日志 + location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$ { + access_log off; + } +} \ No newline at end of file diff --git a/docker/conf/nginx/nginx.conf b/docker/conf/nginx/nginx.conf new file mode 100644 index 00000000..539fa481 --- /dev/null +++ b/docker/conf/nginx/nginx.conf @@ -0,0 +1,57 @@ +user www-data; +worker_processes auto; +pid /run/nginx.pid; +include /etc/nginx/modules-enabled/*.conf; + +events { + worker_connections 768; + # multi_accept on; +} + +http { + + ## + # Basic Settings + ## + + sendfile on; + tcp_nopush on; + types_hash_max_size 2048; + # server_tokens off; + + # server_names_hash_bucket_size 64; + # server_name_in_redirect off; + + include /etc/nginx/mime.types; + default_type application/octet-stream; + + ## + # SSL Settings + ## + + ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE + ssl_prefer_server_ciphers on; + + ## + # Logging Settings + ## + + access_log /var/log/nginx/access.log; + error_log /var/log/nginx/error.log; + + ## + # Gzip Settings + ## + + gzip on; + gzip_min_length 1k; + gzip_vary on; + gzip_proxied any; + gzip_comp_level 6; + gzip_buffers 16 8k; + gzip_http_version 1.1; + gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; + + include /etc/nginx/conf.d/*.conf; + include /etc/nginx/sites-enabled/*; +} \ No newline at end of file diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml new file mode 100644 index 00000000..ff69ba5a --- /dev/null +++ b/docker/docker-compose.yaml @@ -0,0 +1,31 @@ +version: '3' +services: + # 后端 API 程序 + chatgpt-plus-go: + # image: registry.cn-hangzhou.aliyuncs.com/geekmaster/chatgpt-plus-go:v3.0.0 + image: chatplus-go:v3.0.0 + container_name: chatgpt-plus-go + #build: ./ + restart: always + # network_mode: host + ports: + - "5678:5678" + volumes: + - ./conf/config.toml:/var/www/app/config.toml + + # 前端应用 + chatgpt-vue: + # image: registry.cn-hangzhou.aliyuncs.com/geekmaster/chatgpt-plus-vue:v3.0.0 + image: chatplus-vue:v3.0.0 + container_name: chatgpt-plus-vue + #build: ./ + restart: always + # network_mode: host + ports: + - "8080:8080" + volumes: + - ./logs/nginx:/var/log/nginx + - ./conf/nginx/conf.d:/etc/nginx/conf.d + - ./conf/nginx/nginx.conf:/etc/nginx/nginx.conf + - ./ssl:/etc/nginx/ssl + diff --git a/docker/dockerfile-go-api b/docker/dockerfile-go-api new file mode 100644 index 00000000..79495050 --- /dev/null +++ b/docker/dockerfile-go-api @@ -0,0 +1,12 @@ +# GO api docker 镜像创建 +FROM ubuntu:22.04 + +MAINTAINER yangjian + +WORKDIR /var/www/app +COPY ./api/go/bin/chatgpt-v3-amd64-linux /var/www/app + +EXPOSE 5678 + +# 容器启动时执行的命令 +CMD ["./chatgpt-v3-amd64-linux"] diff --git a/docker/dockerfile-vue b/docker/dockerfile-vue new file mode 100644 index 00000000..e26de833 --- /dev/null +++ b/docker/dockerfile-vue @@ -0,0 +1,9 @@ +# 前端 Vue 项目构建 +FROM nginx:1.20.2 + +MAINTAINER yangjian + +WORKDIR /var/www/app +COPY ./web/dist /var/www/app/dist + +EXPOSE 80 443 8080 \ No newline at end of file diff --git a/web/.gitignore b/web/.gitignore index 74c6bf33..1614d33f 100644 --- a/web/.gitignore +++ b/web/.gitignore @@ -7,5 +7,6 @@ lerna-debug.log* node_modules dist +dist.tar.gz .env.development