Sfoglia il codice sorgente

build(deploy): 修改 Dockerfile以解决多包编译问题- 修改 go build 命令的输出路径,从 ./bin/server/main 改为 ./bin/app- 更新 ENTRYPOINT 指令,从 "./server/main" 改为 "./app"
- 这些更改解决了在编译时出现的 "cannot write multiple packages to non-directory" 错误

fusu 3 mesi fa
parent
commit
b5c2088050
2 ha cambiato i file con 10 aggiunte e 4 eliminazioni
  1. 8 2
      README.md
  2. 2 2
      deploy/build/Dockerfile

+ 8 - 2
README.md

@@ -160,6 +160,10 @@ FROM ${REGISTRY}/golang:1.24-alpine AS builder
 ```
 go: cannot write multiple packages to non-directory ./bin/server
 ```
+或
+```
+go: cannot write multiple packages to non-directory ./bin/server/main
+```
 
 需要修改Dockerfile中的以下内容:
 
@@ -172,7 +176,7 @@ RUN export GOPROXY=https://goproxy.cn,direct && go mod tidy && go build -ldflags
 更改为:
 ```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}
+RUN export GOPROXY=https://goproxy.cn,direct && go mod tidy && go build -ldflags="-s -w" -o ./bin/app ${APP_RELATIVE_PATH}
 ```
 
 2. 同时需要更新ENTRYPOINT:
@@ -182,9 +186,11 @@ ENTRYPOINT [ "./server" ]
 
 更改为:
 ```dockerfile
-ENTRYPOINT [ "./server/main" ]
+ENTRYPOINT [ "./app" ]
 ```
 
+这种方式可以确保编译输出是一个单一的可执行文件,而不是目录结构,避免多包编译问题。
+
 ## 验证部署
 部署完成后,您可以通过以下方式验证服务是否正常运行:
 

+ 2 - 2
deploy/build/Dockerfile

@@ -8,7 +8,7 @@ COPY .. /data/app
 WORKDIR /data/app
 
 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}
+RUN export GOPROXY=https://goproxy.cn,direct && go mod tidy && go build -ldflags="-s -w" -o ./bin/app ${APP_RELATIVE_PATH}
 RUN mv config /data/app/bin/
 
 
@@ -28,7 +28,7 @@ WORKDIR /data/app
 COPY --from=builder /data/app/bin /data/app
 
 EXPOSE 8000
-ENTRYPOINT [ "./server/main" ]
+ENTRYPOINT [ "./app" ]
 
 #docker build -t  1.1.1.1:5000/demo-api:v1 --build-arg APP_CONF=config/prod.yml --build-arg  APP_RELATIVE_PATH=./cmd/server/...  .
 #docker run -it --rm --entrypoint=ash 1.1.1.1:5000/demo-api:v1