Files
slogan/server/Dockerfile
T
admin fc56b47406 server: web 静态托管完善 + 联调脚本 + 清理过期工具
- main.go/auth_middleware: web 静态目录托管与 history 回退、Chrome DevTools 探测处理
- 新增 scripts/build_web.sh(缓存判断构建 web)与 scripts/dev.sh(一键构建+启动)
- 删除已过时的 routes.sh(goframe 自动生成 api.json)与 split_db(数据库已拆分完毕)
- docs: 补充联调与测试规范(测试必须用真实用户数据 wenwu901/123456)
2026-08-04 17:15:37 +08:00

54 lines
2.1 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ============================================================
# 统一构建:Flutter web 前端 + Go 后端 + Node 渲染器
# 构建上下文必须为仓库根目录(docker build -f server/Dockerfile .
# ============================================================
# ---------- 前端:Flutter web 构建 ----------
FROM ghcr.io/cirruslabs/flutter:stable AS web-builder
ENV PUB_HOSTED_URL=https://pub.flutter-io.cn
ENV FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
WORKDIR /web
COPY app/pubspec.yaml app/pubspec.lock ./
RUN flutter pub get
COPY app/ .
RUN flutter build web --release
# ---------- 后端:Go 编译 ----------
FROM golang:alpine AS builder
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \
&& apk add --no-cache git ca-certificates tzdata
ENV TZ=Asia/Shanghai
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn,direct
ENV CGO_ENABLED=0
ENV GOTOOLCHAIN=auto
WORKDIR /build
COPY server/go.mod server/go.sum ./
RUN go mod download
COPY server/ .
RUN go build -ldflags="-s -w" -o main ./main.go
# ---------- 渲染器:Node + headless-gl(需原生编译) ----------
FROM node:20-alpine AS renderer
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \
&& apk add --no-cache git python3 make g++ mesa mesa-dev ca-certificates tzdata
WORKDIR /render
COPY server/scripts/avatar-render/package*.json ./
RUN npm ci --omit=dev --registry=https://registry.npmmirror.com
# ---------- 运行时 ----------
FROM alpine:3.19
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \
&& apk add --no-cache ca-certificates tzdata libstdc++ libgcc mesa nodejs
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
WORKDIR /app
COPY --from=web-builder /web/build/web ./web
COPY --from=builder /build/config.yml .
COPY --from=builder /build/main .
COPY --from=renderer /render/node_modules ./scripts/avatar-render/node_modules
COPY server/scripts/avatar-render/ ./scripts/avatar-render/
RUN mkdir -p /app/workspace /app/data
EXPOSE 3007
ENTRYPOINT ["./main"]