|
@@ -116,7 +116,9 @@ systemctl start go-app
|
|
|
3. 生产环境中,建议配置SSL证书以启用HTTPS
|
|
|
4. 您可能需要调整配置文件中的数据库连接信息等配置
|
|
|
|
|
|
-## Go版本问题解决
|
|
|
+## 部署问题解决
|
|
|
+
|
|
|
+### 1. Go版本不匹配问题
|
|
|
|
|
|
如果在构建Docker镜像时遇到如下错误:
|
|
|
|
|
@@ -125,9 +127,15 @@ invalid go version '1.23.0': must match format 1.23
|
|
|
unknown directive: toolchain
|
|
|
```
|
|
|
|
|
|
+或者:
|
|
|
+
|
|
|
+```
|
|
|
+go: go.mod requires go >= 1.23.0 (running go 1.22.12; GOTOOLCHAIN=local)
|
|
|
+```
|
|
|
+
|
|
|
这是因为Dockerfile使用的Go版本与go.mod中声明的版本不匹配。有两种解决方案:
|
|
|
|
|
|
-### 方案一:更新Dockerfile中的Go版本
|
|
|
+#### 方案一:更新Dockerfile中的Go版本
|
|
|
|
|
|
修改`deploy/build/Dockerfile`文件,将:
|
|
|
```dockerfile
|
|
@@ -138,13 +146,45 @@ FROM ${REGISTRY}/golang:1.19-alpine AS builder
|
|
|
FROM ${REGISTRY}/golang:1.24-alpine AS builder
|
|
|
```
|
|
|
|
|
|
-### 方案二:修改go.mod文件
|
|
|
+#### 方案二:修改go.mod文件
|
|
|
|
|
|
如果无法更新Docker环境中的Go版本,可以修改go.mod文件:
|
|
|
|
|
|
1. 将`go 1.23.0`更改为`go 1.19`
|
|
|
2. 删除`toolchain go1.24.1`行
|
|
|
|
|
|
+### 2. 多包编译问题
|
|
|
+
|
|
|
+如果遇到这样的错误:
|
|
|
+
|
|
|
+```
|
|
|
+go: cannot write multiple packages to non-directory ./bin/server
|
|
|
+```
|
|
|
+
|
|
|
+需要修改Dockerfile中的以下内容:
|
|
|
+
|
|
|
+1. 将:
|
|
|
+```dockerfile
|
|
|
+RUN rm -rf /data/app/bin/
|
|
|
+RUN export GOPROXY=https://goproxy.cn,direct && go mod tidy && go build -ldflags="-s -w" -o ./bin/server ${APP_RELATIVE_PATH}
|
|
|
+```
|
|
|
+
|
|
|
+更改为:
|
|
|
+```dockerfile
|
|
|
+RUN mkdir -p /data/app/bin/
|
|
|
+RUN export GOPROXY=https://goproxy.cn,direct && go mod tidy && go build -ldflags="-s -w" -o ./bin/server/main ${APP_RELATIVE_PATH}
|
|
|
+```
|
|
|
+
|
|
|
+2. 同时需要更新ENTRYPOINT:
|
|
|
+```dockerfile
|
|
|
+ENTRYPOINT [ "./server" ]
|
|
|
+```
|
|
|
+
|
|
|
+更改为:
|
|
|
+```dockerfile
|
|
|
+ENTRYPOINT [ "./server/main" ]
|
|
|
+```
|
|
|
+
|
|
|
## 验证部署
|
|
|
部署完成后,您可以通过以下方式验证服务是否正常运行:
|
|
|
|