baiwan02 commited on
Commit
856448a
·
verified ·
1 Parent(s): e9e55e7

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +12 -43
Dockerfile CHANGED
@@ -1,54 +1,23 @@
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"]
 
1
+ FROM golang:1.26 AS go-layer
 
2
 
3
+ FROM node:24
 
 
 
 
 
 
 
 
 
 
4
 
5
+ COPY --from=go-layer /usr/local/go /usr/local/go
6
+ ENV PATH=/usr/local/go/bin:$PATH
7
 
8
+ RUN apt-get update && \
9
+ apt-get install -y --no-install-recommends git ca-certificates && \
10
+ rm -rf /var/lib/apt/lists/*
 
 
 
 
 
 
 
 
 
 
11
 
12
  WORKDIR /app
13
 
14
+ RUN git clone -b dev --single-branch https://github.com/CJackHwang/ds2api.git /app
 
 
 
 
 
15
 
16
+ RUN node start.mjs install && \
17
+ node start.mjs webui && \
18
+ node start.mjs build
 
19
 
 
20
  ENV PORT=7860
21
  EXPOSE 7860
22
 
23
+ CMD ["node", "start.mjs", "prod"]