Build & Push Frontend Docker Image / build-and-push (push) Canceled after 0s
Build Validation / validate (push) Canceled after 6s
Build & Push Backend Docker Image / build-and-push (push) Failing after 10m10s
Build & Push Gateway Docker Image / build-and-push (push) Failing after 10m9s
A professional workspace for AI coding agents with: - Real-time streaming chat with SSE - Session management (fork, clone, tree navigation) - MCP tools browser & metadata panel - Skills browser (global, project, package sources) - Voice input & STT provider configuration - Integrated terminal & file explorer - Model selector with capability metadata - Keyboard-first UI with command palette - 8 languages (en, pt-BR, es, ja, zh-CN, ar, bn, hi) - Tauri 2 desktop app - React 19 + TypeScript + Vite 8 + Tailwind CSS 4 - Pi Agent extension runtime Originally forked from OpenCodeUI, now an independent project. License: GPL-3.0-only
49 lines
1.6 KiB
Docker
49 lines
1.6 KiB
Docker
# ============================================
|
||
# OpenCode WebUI - Frontend
|
||
# ============================================
|
||
# 纯前端静态文件 + Caddy 反向代理 API
|
||
|
||
# ---- Stage 1: 构建前端 ----
|
||
# 前端产物是静态文件,和目标 CPU 架构无关。
|
||
# 多架构镜像构建时让 Node builder 始终跑在构建机原生平台,避免 arm64 通过 QEMU 重跑 npm/vite 构建。
|
||
FROM --platform=$BUILDPLATFORM node:22-alpine AS builder
|
||
|
||
ARG NPM_REGISTRY=https://registry.npmjs.org/
|
||
ARG NPM_REGISTRY_FALLBACK=https://registry.npmmirror.com/
|
||
|
||
WORKDIR /app
|
||
COPY package.json package-lock.json ./
|
||
RUN set -eux; \
|
||
npm config set registry "${NPM_REGISTRY}"; \
|
||
npm config set fetch-retries 5; \
|
||
npm config set fetch-retry-factor 2; \
|
||
npm config set fetch-retry-mintimeout 10000; \
|
||
npm config set fetch-retry-maxtimeout 120000; \
|
||
npm config set audit false; \
|
||
npm config set fund false; \
|
||
if npm ci --ignore-scripts; then \
|
||
exit 0; \
|
||
fi; \
|
||
echo "npm ci failed on ${NPM_REGISTRY}, retrying with ${NPM_REGISTRY_FALLBACK}"; \
|
||
npm cache clean --force; \
|
||
npm config set registry "${NPM_REGISTRY_FALLBACK}"; \
|
||
npm ci --ignore-scripts
|
||
COPY . .
|
||
RUN node scripts/copy-material-icons.mjs
|
||
ENV VITE_API_BASE_URL=/api
|
||
RUN npm run build
|
||
|
||
# ---- Stage 2: Caddy 运行时 ----
|
||
FROM caddy:2-alpine
|
||
|
||
# 前端静态文件
|
||
COPY --from=builder /app/dist /srv
|
||
|
||
# Caddy 配置(默认 + standalone)
|
||
COPY docker/Caddyfile /etc/caddy/Caddyfile
|
||
COPY docker/Caddyfile.standalone /etc/caddy/Caddyfile.standalone
|
||
|
||
EXPOSE 3000
|
||
|
||
CMD ["caddy", "run", "--config", "/etc/caddy/Caddyfile"]
|