|
| 1 | +# syntax=docker/dockerfile:1.7 |
1 | 2 |
|
2 | 3 | # ==================== Stage 1: Web (Bun + Vite) ==================== |
3 | 4 | FROM oven/bun:1.1.29-alpine AS webbuilder |
4 | 5 | WORKDIR /app/web |
5 | 6 | ENV BUN_ENABLE_TELEMETRY=0 |
6 | 7 |
|
7 | | -# 一些老的 alpine 镜像默认仓库会过期,先把仓库指向稳定版本并更新索引 |
| 8 | +# 一些老的 alpine 镜像默认仓库会过期,先把仓库指向稳定版本并更新索引 |
8 | 9 | RUN set -eux; \ |
9 | 10 | echo "https://dl-cdn.alpinelinux.org/alpine/v3.18/main" > /etc/apk/repositories; \ |
10 | 11 | echo "https://dl-cdn.alpinelinux.org/alpine/v3.18/community" >> /etc/apk/repositories; \ |
@@ -80,45 +81,3 @@ RUN go mod download |
80 | 81 |
|
81 | 82 | # 拷贝后端源码 + 前端产物 |
82 | 83 | COPY . . |
83 | | -COPY --from=webbuilder /app/web/dist ./web/dist |
84 | | - |
85 | | -# 构建二进制(如果 main 不在仓库根目录,把 "." 改成你的主程序路径) |
86 | | -RUN go build -trimpath -ldflags "-s -w" -o /out/nebulagate . |
87 | | - |
88 | | -# ==================== Stage 3: Runtime ==================== |
89 | | -FROM alpine:3.20 |
90 | | -WORKDIR /app |
91 | | -ENV TZ=America/Chicago |
92 | | - |
93 | | -# 修复 alpine 镜像仓库并安装必要包 |
94 | | -RUN set -eux; \ |
95 | | - echo "https://dl-cdn.alpinelinux.org/alpine/v3.20/main" > /etc/apk/repositories; \ |
96 | | - echo "https://dl-cdn.alpinelinux.org/alpine/v3.20/community" >> /etc/apk/repositories; \ |
97 | | - apk update || \ |
98 | | - (echo "https://mirrors.aliyun.com/alpine/v3.20/main" > /etc/apk/repositories && \ |
99 | | - echo "https://mirrors.aliyun.com/alpine/v3.20/community" >> /etc/apk/repositories && \ |
100 | | - apk update) || \ |
101 | | - (echo "https://mirrors.tuna.tsinghua.edu.cn/alpine/v3.20/main" > /etc/apk/repositories && \ |
102 | | - echo "https://mirrors.tuna.tsinghua.edu.cn/alpine/v3.20/community" >> /etc/apk/repositories && \ |
103 | | - apk update) || true; \ |
104 | | - apk add --no-cache ca-certificates tzdata || \ |
105 | | - apk add --no-cache --repository=https://dl-cdn.alpinelinux.org/alpine/v3.20/main \ |
106 | | - --repository=https://dl-cdn.alpinelinux.org/alpine/v3.20/community \ |
107 | | - ca-certificates tzdata || \ |
108 | | - apk add --no-cache --repository=https://mirrors.aliyun.com/alpine/v3.20/main \ |
109 | | - --repository=https://mirrors.aliyun.com/alpine/v3.20/community \ |
110 | | - ca-certificates tzdata || \ |
111 | | - apk add --no-cache --repository=https://mirrors.tuna.tsinghua.edu.cn/alpine/v3.20/main \ |
112 | | - --repository=https://mirrors.tuna.tsinghua.edu.cn/alpine/v3.20/community \ |
113 | | - ca-certificates tzdata |
114 | | - |
115 | | -RUN update-ca-certificates || true |
116 | | - |
117 | | -# 拷贝二进制与前端静态资源 |
118 | | -COPY --from=gobuilder /out/nebulagate /app/nebulagate |
119 | | -COPY --from=webbuilder /app/web/dist /app/public |
120 | | - |
121 | | -# 数据工作目录(挂卷) |
122 | | -WORKDIR /data |
123 | | -EXPOSE 3000 |
124 | | -ENTRYPOINT ["/app/nebulagate"] |
0 commit comments