部署备份

This commit is contained in:
2026-07-08 11:08:45 +08:00
parent 2ef6762785
commit 074aaac982
4 changed files with 162 additions and 8 deletions

69
bluetti-tools/Dockerfile Normal file
View File

@@ -0,0 +1,69 @@
# Monorepo: pnpm + Turbo仅构建 apps/web
FROM node:20-bookworm-slim AS builder
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
--mount=type=cache,target=/var/lib/apt,sharing=locked \
apt-get update \
&& apt-get install -y --no-install-recommends openssl ca-certificates
WORKDIR /app
RUN corepack enable && corepack prepare pnpm@9.15.9 --activate
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml turbo.json ./
COPY apps/web/package.json ./apps/web/
COPY packages/ui/package.json ./packages/ui/
COPY packages/shopify-admin/package.json ./packages/shopify-admin/
RUN --mount=type=cache,id=pnpm-store,target=/pnpm/store \
pnpm config set store-dir /pnpm/store \
&& pnpm install --frozen-lockfile
COPY apps/web ./apps/web
COPY packages ./packages
ENV TURBO_TELEMETRY_DISABLED=1
RUN --mount=type=cache,id=turbo-cache,target=/app/node_modules/.cache/turbo \
pnpm turbo build --filter=web
# 产出仅含 web 生产依赖的独立部署目录(比 runner 内 monorepo install 更小)
RUN pnpm --filter=web deploy --prod /app/deploy
# prisma CLI 为 devDep用 web 包内已安装的 prisma 在 deploy 目录 generate
RUN --mount=type=cache,id=prisma-cache,target=/root/.cache/prisma \
pnpm --filter=web exec prisma generate --schema=/app/deploy/prisma/schema.prisma
# 运行时不需要源码与构建配置
RUN rm -rf /app/deploy/app /app/deploy/.turbo /app/deploy/.react-router /app/deploy/components /app/deploy/hooks /app/deploy/lib \
/app/deploy/vite.config.ts /app/deploy/tsconfig.json /app/deploy/components.json /app/deploy/react-router.config.ts \
/app/deploy/Dockerfile /app/deploy/.dockerignore
# 运行镜像deploy 产物 + 全局 prisma CLImigrate deploy
FROM node:20-bookworm-slim AS runner
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
--mount=type=cache,target=/var/lib/apt,sharing=locked \
apt-get update \
&& apt-get install -y --no-install-recommends openssl ca-certificates
RUN --mount=type=cache,id=npm-cache,target=/root/.npm \
npm install -g prisma@6.19.0
WORKDIR /app
ENV NODE_ENV=production
ENV HOST=0.0.0.0
ENV PORT=3000
COPY --from=builder /app/deploy ./
COPY docker/docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod +x /docker-entrypoint.sh
EXPOSE 3000
HEALTHCHECK --interval=30s --timeout=5s --start-period=40s --retries=3 \
CMD node -e "fetch('http://127.0.0.1:' + (process.env.PORT || 3000)).then(r => process.exit(r.ok ? 0 : 1)).catch(() => process.exit(1))"
ENTRYPOINT ["/docker-entrypoint.sh"]

View File

@@ -0,0 +1,32 @@
# 博客图片资源 WebReact Router + Prisma SQLite
#
# 使用:
# 1. 复制 apps/web/.env.example 为 apps/web/.env填写 SHOPIFY_*、SESSION_SECRET 等
# 2. docker compose up -d --build
# 3. 浏览器访问 http://localhost:30001 ,无用户时打开 /setup
# 说明compose 会注入 DATABASE_URL=file:/data/prod.db覆盖 .env 里本地 SQLite 路径)
#
# 数据库文件持久化在卷 prisma-data 中;更换主机或备份请挂载/拷贝该卷。
services:
web:
image: bluetti-tools-web:latest
ports:
- "30001:3000"
env_file:
- apps/web/.env
environment:
# 覆盖 .env 中的本地路径,使用容器内持久化卷
DATABASE_URL: file:/data/prod.db
HOST: 0.0.0.0
PORT: "3000"
# 生产必须设置(与 apps/web/.env 中一致);未设置会导致登录时报错
# SESSION_SECRET: 请用 openssl rand -hex 32 生成后写入 apps/web/.env 或此处
# 公网访问时请改为实际 HTTPS 地址OAuth 回调、邮件链接)
# SHOPIFY_APP_URL: https://your-domain.com
volumes:
- /bluetti/frontend_project/bluetti-tools-configs/data:/data
restart: unless-stopped
# volumes:
# prisma-data:

35
bluetti-tools/drone.yaml Normal file
View File

@@ -0,0 +1,35 @@
kind: pipeline
type: docker
name: deploy-bluetti-web
steps:
# 步骤 1: 挂载宿主机 Docker 和配置目录,直接构建并启动
- name: build-and-deploy
image: docker:24.0.7 # 或者使用 docker:dind
volumes:
- name: docker_sock
path: /var/run/docker.sock # 联动宿主机 Docker
- name: configs_dir
path: /bluetti/frontend_project/bluetti-tools-configs # 映射宿主机配置目录
commands:
- |
export DOCKER_BUILDKIT=1
cp /bluetti/frontend_project/bluetti-tools-configs/tools.production.env apps/web/.env
docker build --build-arg BUILDKIT_INLINE_CACHE=1 -t bluetti-tools-web:latest -f Dockerfile .
docker compose down --remove-orphans
docker compose up -d
echo ">>>>>> 部署成功! <<<<<<"
volumes:
- name: docker_sock
host:
path: /var/run/docker.sock
- name: configs_dir
host:
path: /bluetti/frontend_project/bluetti-tools-configs # 宿主机存放所有 .env 的绝对路径
trigger:
branch:
- main
event:
- push