baiwan02 commited on
Commit
e9e55e7
·
verified ·
1 Parent(s): 0697aff

Create Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +54 -0
Dockerfile ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 多阶段构建:WebUI 构建阶段
2
+ FROM node:24 AS webui-builder
3
+
4
+ # 安装git、克隆代码、清理构建依赖
5
+ RUN apt-get update && \
6
+ apt-get install -y --no-install-recommends git && \
7
+ git clone -b dev --single-branch https://github.com/CJackHwang/ds2api.git /app && \
8
+ apt purge -y git && \
9
+ apt autoremove -y && \
10
+ rm -rf /var/lib/apt/lists/*
11
+
12
+ # 构建前端
13
+ WORKDIR /app/webui
14
+ RUN npm ci && npm run build
15
+
16
+ # Go 构建阶段
17
+ FROM golang:1.26 AS go-builder
18
+
19
+ WORKDIR /app
20
+ ARG BUILD_VERSION
21
+ COPY --from=webui-builder /app/go.mod /app/go.sum* ./
22
+ RUN go mod download
23
+ COPY --from=webui-builder /app ./
24
+ RUN BUILD_VERSION_RESOLVED="${BUILD_VERSION:-}"; \
25
+ if [ -z "${BUILD_VERSION_RESOLVED}" ] && [ -f VERSION ]; then \
26
+ BUILD_VERSION_RESOLVED="$(cat VERSION | tr -d "[:space:]")"; \
27
+ fi; \
28
+ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -buildvcs=false -ldflags="-s -w -X ds2api/internal/version.BuildVersion=${BUILD_VERSION_RESOLVED}" -o /out/ds2api ./cmd/ds2api
29
+
30
+ # 运行阶段
31
+ FROM debian:bookworm-slim
32
+
33
+ WORKDIR /app
34
+
35
+ # 安装必要的依赖并创建用户
36
+ RUN apt-get update && \
37
+ apt-get install -y --no-install-recommends ca-certificates && \
38
+ groupadd -r ds2api && useradd -r -g ds2api -d /app -s /sbin/nologin ds2api && \
39
+ mkdir -p /app/data /data && chown -R ds2api:ds2api /app /data && \
40
+ rm -rf /var/lib/apt/lists/*
41
+
42
+ # 复制构建产物
43
+ COPY --from=go-builder /out/ds2api /usr/local/bin/ds2api
44
+ COPY --from=go-builder --chown=ds2api:ds2api /app/config.example.json /app/config.example.json
45
+ COPY --from=webui-builder --chown=ds2api:ds2api /app/static/admin /app/static/admin
46
+
47
+ # 配置端口
48
+ ENV PORT=7860
49
+ EXPOSE 7860
50
+
51
+ USER ds2api
52
+
53
+ # 启动服务
54
+ CMD ["/usr/local/bin/ds2api"]