File size: 841 Bytes
75777c4
7000a10
66c1634
75777c4
6d92a3e
 
75777c4
6d92a3e
 
 
75777c4
6d92a3e
 
75777c4
a66acd1
7000a10
75777c4
7000a10
e3cc9f3
75777c4
6d92a3e
 
75777c4
a66acd1
6d92a3e
75777c4
7000a10
 
 
6d92a3e
75777c4
7cd35c9
6d92a3e
75777c4
a66acd1
7000a10
75777c4
7000a10
 
e3cc9f3
75777c4
a66acd1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# 构建阶段
FROM golang:1.22-alpine AS builder

# 设置工作目录
WORKDIR /app

# 为了减少Docker层数,先复制 go.mod 和 go.sum 并下载依赖
COPY go.mod go.sum ./
RUN go mod download

# 复制源代码
COPY . .

# 编译Go应用,启用优化参数
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o ddg .

# 运行阶段
FROM alpine:3.18

# 设置工作目录
WORKDIR /app

# 将编译好的二进制文件从构建阶段复制过来
COPY --from=builder /app/ddg .

# 设置环境变量
ENV MAX_RETRY_COUNT=3
ENV RETRY_DELAY=5000
ENV PORT=7860

# 公开端口
EXPOSE 7860

# 确保二进制文件具有可执行权限
RUN chmod +x ddg

# 使用非 root 用户运行应用(增强安全性)
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
USER appuser

# 启动应用
ENTRYPOINT ["./ddg"]