Deeptrain-Community / chatnio

🚀 Next Generation AI One-Stop Internationalization Solution. 🚀 下一代 AI 一站式 B/C 端解决方案,支持 OpenAI,Midjourney,Claude,讯飞星火,Stable Diffusion,DALL·E,ChatGLM,通义千问,腾讯混元,360 智脑,百川 AI,火山方舟,新必应,Gemini,Moonshot 等模型,支持对话分享,自定义预设,云端同步,模型市场,支持弹性计费和订阅计划模式,支持图片解析,支持联网搜索,支持模型缓存,丰富美观的后台管理与仪表盘数据统计。
https://chatnio.com
Apache License 2.0
2.71k stars 447 forks source link

Go后端编译求助 #167

Closed duyaTech closed 2 months ago

duyaTech commented 2 months ago

IDE:GoLand Go版本:go1.22.2 windows/amd64 刚下的最新仓库代码,使用ide自动构建依赖,运行go run main.go出现报错,看了Q&A,是我的mysql和redis还没安装导致的吗,刚接触,求教,以下报错截图,看起来不像连接问题,貌似是依赖的函数没了: image

zmh-program commented 2 months ago

设环境变量 CGO_ENABLED为1

duyaTech commented 2 months ago

这个拉下来的代码没动默认就是1,我部署环境是虚拟机,用的linux,开发环境是windows `# Author: ProgramZmh

License: Apache-2.0

Description: Dockerfile for chatnio

FROM golang:1.20-alpine AS backend

WORKDIR /backend COPY . .

Set go proxy to https://goproxy.cn (open for vps in China Mainland)

RUN go env -w GOPROXY=https://goproxy.cn,direct

ENV GOOS=linux GO111MODULE=on CGO_ENABLED=1

Install dependencies for cgo

RUN apk add --no-cache gcc musl-dev

Build backend

RUN go install && \ go build .

FROM node:18 AS frontend

WORKDIR /app COPY ./app .

RUN npm install -g pnpm && \ pnpm install && \ pnpm run build && \ rm -rf node_modules src

FROM alpine

Install dependencies

RUN apk update && \ apk upgrade && \ apk add --no-cache wget ca-certificates tzdata && \ update-ca-certificates 2>/dev/null || true && \ rm -rf /var/cache/apk/*

Set timezone

RUN echo "Asia/Shanghai" > /etc/timezone && \ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

WORKDIR /

Copy dist

COPY --from=backend /backend / COPY --from=frontend /app/dist /app/dist

Expose port

EXPOSE 8094

Run application

CMD ["./chat"] `

zmh-program commented 2 months ago

说下你的后端编译步骤是什么

duyaTech commented 2 months ago
  1. GoLand打开自动构建依赖
  2. 构建完之后go run main.go 然后就报错了
zmh-program commented 2 months ago

配置cgo enabled了么 powershell应该是 $Env:xxx=1 确保是这样执行后go run .的?

duyaTech commented 2 months ago

我按照你说的试了下,貌似是C编译器没安装对不? image

zmh-program commented 2 months ago

是的,CGO就是使用C Complied win可以装mingw

duyaTech commented 2 months ago

ok我装个试试

duyaTech commented 2 months ago

我安装了mingw了,执行go run . 成功了! image 这个应该就是我还没连接虚拟机的mysql报的错 多谢啦,我再研究研究~

zmh-program commented 2 months ago

是的,信息是无法连接 mysql 配置文件在 ~/config/config.yaml

duyaTech commented 2 months ago

我找了半天没看到mysql的表结构初始化sql文件,然后我又想去容器部署的chatnio的mysql里导出,但是我不知道咋进去容器的数据库了,我部署环境里本来就已经有了个mysql和redis的容器了,所以我想着编译后端然后连接我已有的mysql和redis,但是我找不到数据库的表结构是啥,咋整QAQ image

duyaTech commented 2 months ago

我之前单独部署的mysql和redis容器我进的去,端口暴露出来了

zmh-program commented 2 months ago

? 不需要手动初始化

zmh-program commented 2 months ago

你的意思是你用的docker-compose部署,但是你想用你之前的mysql和rds。

docker-compose 配置好网络就行了呗,比如你想用你之前端口暴露在宿主机的mysql和rds 就改compose的配置

给你点个思路,如果需要宿主机网络可以用 network_mode: host

然后在环境变量里配置host为localhost,确保密码等conf正确即可

duyaTech commented 2 months ago

昂没错,我就是这个意思!我之前用ReadMe推荐的方式部署的时候确实没有操作过任何数据库,如下: image 但是我现在想用外置的数据库,那外置数据库的表结构初始化我现在怎么解决会比较合适呢?

duyaTech commented 2 months ago

主要原因还是我不熟悉容器相关的操作,就想把这个项目全部用自行编译的方式慢慢拆开学习学习,不再涉及到容器,我一直是做嵌入式开发的,知识点太多我Hold不住= =

zmh-program commented 2 months ago

你已经有用户/数据、需要迁移数据库了?

如果没数据只是有结构,不需要手动初始化,让 chatnio 自动初始化即可,无需手动操作

duyaTech commented 2 months ago

我明白你的意思了,就是只要配置好mysql和rds的连接,可以没有表,chatnio会自己创建对不?

zmh-program commented 2 months ago

肯定

duyaTech commented 2 months ago

我现在后端编译正常能够运行了,mysql和rds连接成功,然后我在本地起了前端项目,配置的接口地址是localhost:5173,但是登陆失败,用的是初始化的账号密码,这是啥原因啊QAQ,后端控制台和浏览器接口请求如下: image

zmh-program commented 2 months ago

开发环境不需要配置后端地址,或者配置为 http://localhost:5173/api

duyaTech commented 2 months ago

我是把前端的这个环境变量VITE_BACKEND_ENDPOINT注释了,登录请求地址应该是对的,刚我用postman测试了下,有点不对劲,postman返回如下: image

duyaTech commented 2 months ago

这是啥问题呢,go控制台没有看到接口请求 = =

zmh-program commented 2 months ago

用vite启动的?你vite conf改啥配置了吗

duyaTech commented 2 months ago

是不是go运行的端口不是5173呢

zmh-program commented 2 months ago

是不是go运行的端口不是5173呢

我 vite dev server 配置里有代理后端啊

duyaTech commented 2 months ago

代理是这样的没改动,我是用yarn dev起的前端 image

duyaTech commented 2 months ago

哦不,那好像是mock

zmh-program commented 2 months ago

em... 你不早说你这是打包了...

zmh-program commented 2 months ago

http://localhost:8094

duyaTech commented 2 months ago

哈哈哈哈真是端口的问题,都通了!感谢友友耐心指导!

zmh-program commented 2 months ago