Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1d0e1812c8 | |||
| 40490ffe43 | |||
| 455b6d40de | |||
| 62dcac103f | |||
| 63a83ddd5e |
+6
-17
@@ -1,31 +1,20 @@
|
|||||||
FROM golang:alpine AS backend-builder
|
FROM golang:latest AS backend-builder
|
||||||
RUN apk add --no-cache build-base
|
RUN apt update
|
||||||
|
RUN apt install -y build-essential
|
||||||
WORKDIR /build
|
WORKDIR /build
|
||||||
COPY . .
|
COPY . .
|
||||||
ENV CGO_ENABLED=1
|
ENV CGO_ENABLED=1
|
||||||
RUN go build -ldflags="-s -w" -o bin/server
|
RUN go build -ldflags="-s -w" -o bin/server
|
||||||
|
|
||||||
RUN apk add --no-cache upx
|
RUN apt install -y upx-ucl
|
||||||
|
|
||||||
RUN upx --best --lzma bin/server
|
RUN upx --best --lzma bin/server
|
||||||
|
|
||||||
# 使用更小的 Debian
|
FROM golang:latest
|
||||||
FROM debian:bookworm-slim
|
|
||||||
# 安装最小运行时依赖
|
|
||||||
RUN apt-get update && apt-get install -y \
|
|
||||||
ca-certificates \
|
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
|
||||||
COPY --from=backend-builder /build/bin/server /app/server
|
COPY --from=backend-builder /build/bin/server /app/server
|
||||||
COPY static /app/static
|
COPY static /app/static
|
||||||
COPY static/*.so /app/
|
COPY static/*.so /app/
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
# 确保文件存在且有执行权限
|
|
||||||
RUN ls -la /app/ && \
|
|
||||||
chmod +x /app/server && \
|
|
||||||
echo "=== 依赖检查 ===" && \
|
|
||||||
ldd /app/server || echo "无法检查依赖"
|
|
||||||
|
|
||||||
ENV LD_LIBRARY_PATH=/app
|
|
||||||
EXPOSE 8080
|
EXPOSE 8080
|
||||||
RUN ls -a
|
RUN ls -a
|
||||||
CMD ["/app/server"]
|
CMD ["./server"]
|
||||||
@@ -5,9 +5,12 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
_ "image/jpeg"
|
_ "image/jpeg"
|
||||||
_ "image/png"
|
_ "image/png"
|
||||||
|
"likedream-goframe/internal/framework/logger"
|
||||||
"os"
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
|
||||||
ort "github.com/yalue/onnxruntime_go"
|
ort "github.com/yalue/onnxruntime_go"
|
||||||
|
"go.uber.org/zap"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ImageClassifier struct {
|
type ImageClassifier struct {
|
||||||
@@ -21,6 +24,9 @@ type ImageClassifier struct {
|
|||||||
// NewImageClassifier 创建新的图片分类器
|
// NewImageClassifier 创建新的图片分类器
|
||||||
func NewImageClassifier(modelPath, classesPath string) (*ImageClassifier, error) {
|
func NewImageClassifier(modelPath, classesPath string) (*ImageClassifier, error) {
|
||||||
// 初始化ONNX Runtime
|
// 初始化ONNX Runtime
|
||||||
|
dir := filepath.Dir(os.Args[0])
|
||||||
|
ort.SetSharedLibraryPath(dir)
|
||||||
|
logger.Logger.Info("初始化onnx:", zap.String("文件夹", dir))
|
||||||
err := ort.InitializeEnvironment()
|
err := ort.InitializeEnvironment()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("初始化ONNX Runtime失败: %v", err)
|
return nil, fmt.Errorf("初始化ONNX Runtime失败: %v", err)
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ func Pass(err *error) {
|
|||||||
if r := recover(); r != nil {
|
if r := recover(); r != nil {
|
||||||
e, ok := errorx.ErrorFromPanic(r)
|
e, ok := errorx.ErrorFromPanic(r)
|
||||||
if ok {
|
if ok {
|
||||||
*err = e
|
*err = oops.Wrap(e)
|
||||||
} else {
|
} else {
|
||||||
panic(r)
|
panic(r)
|
||||||
}
|
}
|
||||||
@@ -61,7 +61,7 @@ func HandleError(f func(error)) {
|
|||||||
if r := recover(); r != nil {
|
if r := recover(); r != nil {
|
||||||
e, ok := errorx.ErrorFromPanic(r)
|
e, ok := errorx.ErrorFromPanic(r)
|
||||||
if ok {
|
if ok {
|
||||||
f(e)
|
f(oops.Wrap(e))
|
||||||
} else {
|
} else {
|
||||||
panic(r)
|
panic(r)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user