Go后端编译求助
duyaTech opened this issue · comments
设环境变量 CGO_ENABLED为1
这个拉下来的代码没动默认就是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"]
`
说下你的后端编译步骤是什么
- GoLand打开自动构建依赖
- 构建完之后go run main.go
然后就报错了
配置cgo enabled了么
powershell应该是
$Env:xxx=1
确保是这样执行后go run .
的?
是的,CGO就是使用C Complied
win可以装mingw
ok我装个试试
是的,信息是无法连接 mysql
配置文件在 ~/config/config.yaml
我之前单独部署的mysql和redis容器我进的去,端口暴露出来了
? 不需要手动初始化
你的意思是你用的docker-compose部署,但是你想用你之前的mysql和rds。
docker-compose 配置好网络就行了呗,比如你想用你之前端口暴露在宿主机的mysql和rds 就改compose的配置
给你点个思路,如果需要宿主机网络可以用
network_mode: host
然后在环境变量里配置host为localhost,确保密码等conf正确即可
主要原因还是我不熟悉容器相关的操作,就想把这个项目全部用自行编译的方式慢慢拆开学习学习,不再涉及到容器,我一直是做嵌入式开发的,知识点太多我Hold不住= =
你已经有用户/数据、需要迁移数据库了?
如果没数据只是有结构,不需要手动初始化,让 chatnio 自动初始化即可,无需手动操作
我明白你的意思了,就是只要配置好mysql和rds的连接,可以没有表,chatnio会自己创建对不?
肯定
开发环境不需要配置后端地址,或者配置为 http://localhost:5173/api
这是啥问题呢,go控制台没有看到接口请求 = =
用vite启动的?你vite conf改啥配置了吗
是不是go运行的端口不是5173呢
是不是go运行的端口不是5173呢
我 vite dev server 配置里有代理后端啊
哦不,那好像是mock
em... 你不早说你这是打包了...
哈哈哈哈真是端口的问题,都通了!感谢友友耐心指导!
好