1
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
.git
|
.git
|
||||||
.idea
|
.idea
|
||||||
|
# 运行时数据由宿主机 bind mount 提供,禁止打进镜像(镜像内快照会与宿主机数据脱节)
|
||||||
|
data
|
||||||
workspace
|
workspace
|
||||||
ui-src/node_modules
|
ui-src/node_modules
|
||||||
ui-src/dist
|
ui-src/dist
|
||||||
|
|||||||
+10
-2
@@ -1,5 +1,7 @@
|
|||||||
# ==================== 阶段 1:构建前端 SPA ====================
|
# ==================== 阶段 1:构建前端 SPA ====================
|
||||||
FROM node:20-alpine AS ui
|
FROM node:20-alpine AS ui
|
||||||
|
# 国内网络直连官方源不稳定,npm 走 npmmirror
|
||||||
|
ENV npm_config_registry=https://registry.npmmirror.com
|
||||||
WORKDIR /ui
|
WORKDIR /ui
|
||||||
COPY ui-src/package.json ui-src/package-lock.json ./
|
COPY ui-src/package.json ui-src/package-lock.json ./
|
||||||
RUN npm ci
|
RUN npm ci
|
||||||
@@ -8,6 +10,8 @@ RUN npm run build
|
|||||||
|
|
||||||
# ==================== 阶段 2:构建后端二进制(modernc sqlite 纯 Go,无 CGO) ====================
|
# ==================== 阶段 2:构建后端二进制(modernc sqlite 纯 Go,无 CGO) ====================
|
||||||
FROM golang:1.26 AS build
|
FROM golang:1.26 AS build
|
||||||
|
# 国内网络直连官方源不稳定,go module 走 goproxy.cn
|
||||||
|
ENV GOPROXY=https://goproxy.cn,direct
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY go.mod go.sum ./
|
COPY go.mod go.sum ./
|
||||||
RUN go mod download
|
RUN go mod download
|
||||||
@@ -15,10 +19,14 @@ COPY . .
|
|||||||
RUN CGO_ENABLED=0 go build -ldflags="-s -w" -o rag-local .
|
RUN CGO_ENABLED=0 go build -ldflags="-s -w" -o rag-local .
|
||||||
|
|
||||||
# ==================== 阶段 3:精简运行镜像 ====================
|
# ==================== 阶段 3:精简运行镜像 ====================
|
||||||
|
# 时区数据与 CA 证书直接从 golang 构建阶段拷贝,避免 apk 联网拉包(构建环境可能无外网)
|
||||||
FROM alpine:3.20
|
FROM alpine:3.20
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
RUN apk add --no-cache tzdata && \
|
COPY --from=build /usr/share/zoneinfo /usr/share/zoneinfo
|
||||||
adduser -D -u 1000 app && \
|
COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
|
||||||
|
# gse 中文分词词典:LoadDict 按编译期源码位置(builder 的 /go/pkg/mod/...)逐文件加载整套 zh 词典,运行时必须同路径存在
|
||||||
|
COPY --from=build /go/pkg/mod/github.com/go-ego/gse@v1.0.2/data/dict/zh /go/pkg/mod/github.com/go-ego/gse@v1.0.2/data/dict/zh
|
||||||
|
RUN adduser -D -u 1000 app && \
|
||||||
mkdir -p /app/data /app/workspace && \
|
mkdir -p /app/data /app/workspace && \
|
||||||
chown -R app:app /app
|
chown -R app:app /app
|
||||||
ENV TZ=Asia/Shanghai
|
ENV TZ=Asia/Shanghai
|
||||||
|
|||||||
@@ -145,6 +145,12 @@
|
|||||||
docker compose up -d --build
|
docker compose up -d --build
|
||||||
```
|
```
|
||||||
|
|
||||||
|
> **Linux 服务器首次部署前**:`data/` 与 `workspace/` 由宿主机 bind mount 提供(相对 compose 文件目录,迁移时连目录内容一起拷贝)。若目录尚不存在或由 root 创建,容器内 `app` 用户(uid 1000)将无法写入 SQLite,须先执行:
|
||||||
|
> ```bash
|
||||||
|
> mkdir -p data workspace && chown -R 1000:1000 data workspace
|
||||||
|
> ```
|
||||||
|
> 迁移已有数据后还须检查 `data/system.db` 中 `model_config` 表的 `endpoint_url`:表里存的若是 `127.0.0.1`,在新机器上会指向自身,应改为实际模型服务可达地址。
|
||||||
|
|
||||||
- 浏览器打开 http://localhost:8080
|
- 浏览器打开 http://localhost:8080
|
||||||
- 启动日志中查看访问令牌(`docker compose logs rag-local` 搜索"访问令牌")
|
- 启动日志中查看访问令牌(`docker compose logs rag-local` 搜索"访问令牌")
|
||||||
- 登录后按以下流程使用:
|
- 登录后按以下流程使用:
|
||||||
|
|||||||
Reference in New Issue
Block a user