HuggingFace0920 commited on
Commit
0bd2cb4
·
verified ·
1 Parent(s): 568cc0c

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +44 -33
Dockerfile CHANGED
@@ -1,37 +1,48 @@
1
- # 使用具体的 Ubuntu 版本
2
- FROM ubuntu:22.04
3
 
4
  # 设置工作目录
5
  WORKDIR /app
6
 
7
- # 安装必要的工具,包括 wget、curl、tar 和 jq
8
- RUN apt-get update && apt-get install -y \
9
- curl \
10
- tar \
11
- wget \
12
- jq \
13
- && rm -rf /var/lib/apt/lists/*
14
-
15
- # 获取最新版本的 linux-amd64.tar.gz 文件
16
- RUN curl -s https://api.github.com/repos/lejianwen/rustdesk-api/releases/latest \
17
- | jq -r '.assets[] | select(.name == "linux-amd64.tar.gz") | .browser_download_url' \
18
- | wget -qi -
19
-
20
- # 解压下载的文件
21
- RUN tar -xzf linux-amd64.tar.gz
22
-
23
- # 将 release 目录下的文件转移到 WORKDIR
24
- RUN mv /app/linux-amd64/release/* /app/ || true
25
-
26
- # 删除原始的 .tar.gz 文件
27
- RUN rm -f linux-amd64.tar.gz
28
-
29
- # 检查 apimain 文件是否存在并赋予可执行权限
30
- RUN if [ -f "/app/apimain" ]; then \
31
- chmod +x /app/apimain; \
32
- else \
33
- echo "apimain file does not exist"; \
34
- fi
35
-
36
- # 运行可执行文件(假设可执行文件名为 apimain)
37
- CMD ["./apimain"]
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM golang:1.20-alpine AS builder
 
2
 
3
  # 设置工作目录
4
  WORKDIR /app
5
 
6
+ # 安装必要的依赖
7
+ RUN apk add --no-cache git make gcc musl-dev nodejs npm
8
+
9
+ # 克隆 RustDesk API 仓库
10
+ RUN git clone https://github.com/lejianwen/rustdesk-api.git .
11
+
12
+ # 安装 Go 依赖
13
+ RUN go mod tidy
14
+
15
+ # 构建前端
16
+ RUN mkdir -p resources/admin
17
+ RUN git clone https://github.com/lejianwen/rustdesk-api-web resources/rustdesk-api-web
18
+ WORKDIR /app/resources/rustdesk-api-web
19
+ RUN npm install
20
+ RUN npm run build
21
+ RUN cp -ar dist/* ../admin/
22
+
23
+ # 生成 API 代码
24
+ WORKDIR /app
25
+ RUN go generate generate_api.go
26
+
27
+ # 构建最终的可执行文件
28
+ RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o rustdesk-api .
29
+
30
+ # 创建轻量级运行时镜像
31
+ FROM alpine:latest
32
+
33
+ # 安装必要的依赖
34
+ RUN apk --no-cache add ca-certificates
35
+
36
+ # 设置工作目录
37
+ WORKDIR /app
38
+
39
+ # 从构建镜像复制可执行文件
40
+ COPY --from=builder /app/rustdesk-api .
41
+ COPY --from=builder /app/resources /app/resources
42
+ COPY --from=builder /app/config.yaml /app/config.yaml
43
+
44
+ # 暴露 API 端口
45
+ EXPOSE 8080
46
+
47
+ # 启动应用
48
+ CMD ["./rustdesk-api"]