Files
upage-git/upage/deployment/docker-compose.html
2025-09-29 03:02:50 +00:00

62 lines
36 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

<!doctype html>
<html lang="zh-Hans" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-deployment/docker-compose" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.9.0">
<title data-rh="true">Docker Compose 部署 | UPage 文档</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://halo-dev.github.io/upage/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://halo-dev.github.io/upage/img/social-card.png"><meta data-rh="true" property="og:url" content="https://halo-dev.github.io/upage/deployment/docker-compose"><meta data-rh="true" property="og:locale" content="zh_Hans"><meta data-rh="true" name="docusaurus_locale" content="zh-Hans"><meta data-rh="true" name="docsearch:language" content="zh-Hans"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Docker Compose 部署 | UPage 文档"><meta data-rh="true" name="description" content="本文档详细介绍如何使用 Docker Compose 部署 UPage这是一种更便捷的方式来管理 UPage 的部署。"><meta data-rh="true" property="og:description" content="本文档详细介绍如何使用 Docker Compose 部署 UPage这是一种更便捷的方式来管理 UPage 的部署。"><link data-rh="true" rel="icon" href="/upage/../public/favicon.svg"><link data-rh="true" rel="canonical" href="https://halo-dev.github.io/upage/deployment/docker-compose"><link data-rh="true" rel="alternate" href="https://halo-dev.github.io/upage/deployment/docker-compose" hreflang="zh-Hans"><link data-rh="true" rel="alternate" href="https://halo-dev.github.io/upage/deployment/docker-compose" hreflang="x-default"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"部署指南","item":"https://halo-dev.github.io/upage/deployment-guide"},{"@type":"ListItem","position":2,"name":"Docker Compose 部署","item":"https://halo-dev.github.io/upage/deployment/docker-compose"}]}</script><link rel="stylesheet" href="/upage/assets/css/styles.8ea0c4aa.css">
<script src="/upage/assets/js/runtime~main.8350f77c.js" defer="defer"></script>
<script src="/upage/assets/js/main.648541e0.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg style="display: none;"><defs>
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||(window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light")),document.documentElement.setAttribute("data-theme-choice",t||"system")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="跳到主要内容"><a class="skipToContent_SnWU" href="#__docusaurus_skipToContent_fallback">跳到主要内容</a></div><nav aria-label="主导航" class="theme-layout-navbar navbar navbar--fixed-top"><div class="navbar__inner"><div class="theme-layout-navbar-left navbar__items"><button aria-label="切换导航栏" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/upage/"><div class="navbar__logo"><img src="/upage/img/logo.svg" alt="UPage Logo" class="themedComponent_PxYp themedComponent--light_BsnN"><img src="/upage/img/logo.svg" alt="UPage Logo" class="themedComponent_PxYp themedComponent--dark_P6BI"></div><b class="navbar__title text--truncate">UPage</b></a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/upage/">使用文档</a></div><div class="theme-layout-navbar-right navbar__items navbar__items--right"><a href="https://github.com/halo-dev/upage" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_xtnk"><use href="#theme-svg-external-link"></use></svg></a><div class="toggle_crTl colorModeToggle_eWi8"><button class="clean-btn toggleButton_BQDk toggleButtonDisabled_lECB" type="button" disabled="" title="system mode" aria-label="切换浅色/暗黑模式当前为system mode"><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_KZAc lightToggleIcon_LT1z"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_KZAc darkToggleIcon_fJCx"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_KZAc systemToggleIcon_m6ZP"><path fill="currentColor" d="m12 21c4.971 0 9-4.029 9-9s-4.029-9-9-9-9 4.029-9 9 4.029 9 9 9zm4.95-13.95c1.313 1.313 2.05 3.093 2.05 4.95s-0.738 3.637-2.05 4.95c-1.313 1.313-3.093 2.05-4.95 2.05v-14c1.857 0 3.637 0.737 4.95 2.05z"></path></svg></button></div><div class="navbarSearchContainer_GyVn"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="theme-layout-main main-wrapper mainWrapper_fO6_"><div class="docsWrapper_G3eT"><button aria-label="回到顶部" class="clean-btn theme-back-to-top-button backToTopButton_nMBz" type="button"></button><div class="docRoot_iPwj"><aside class="theme-doc-sidebar-container docSidebarContainer_Yovm"><div class="sidebarViewport_e1um"><div class="sidebar_xcav"><nav aria-label="文档侧边栏" class="menu thin-scrollbar menu_EjuG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/upage/"><span title="首页" class="linkLabel_fmgc">首页</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/upage/quick-start"><span title="快速开始" class="linkLabel_fmgc">快速开始</span></a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="categoryLink__DnE menu__link menu__link--sublist menu__link--active" href="/upage/deployment-guide"><span title="部署指南" class="categoryLinkLabel_rUKM">部署指南</span></a><button aria-label="折叠侧边栏分类 &#x27;部署指南&#x27;" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/upage/deployment/docker"><span title="Docker 部署" class="linkLabel_fmgc">Docker 部署</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/upage/deployment/docker-compose"><span title="Docker Compose 部署" class="linkLabel_fmgc">Docker Compose 部署</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/upage/deployment/source"><span title="源码部署" class="linkLabel_fmgc">源码部署</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/upage/deployment/logto"><span title="Logto 认证集成" class="linkLabel_fmgc">Logto 认证集成</span></a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/upage/deployment/others"><span title="其他配置" class="linkLabel_fmgc">其他配置</span></a></li></ul></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/upage/configuration"><span title="配置参考" class="linkLabel_fmgc">配置参考</span></a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="categoryLink__DnE menu__link menu__link--sublist" href="/upage/user-guide"><span title="用户指南" class="categoryLinkLabel_rUKM">用户指南</span></a><button aria-label="展开侧边栏分类 &#x27;用户指南&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="categoryLink__DnE menu__link menu__link--sublist" href="/upage/contributing"><span title="贡献指南" class="categoryLinkLabel_rUKM">贡献指南</span></a><button aria-label="展开侧边栏分类 &#x27;贡献指南&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/upage/faq"><span title="常见问题" class="linkLabel_fmgc">常见问题</span></a></li></ul></nav></div></div></aside><main class="docMainContainer_WqOS"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_s9lu"><div class="docItemContainer_Wij8"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_dPwh" aria-label="页面路径"><ul class="breadcrumbs"><li class="breadcrumbs__item"><a aria-label="主页面" class="breadcrumbs__link" href="/upage/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_xzA8"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><a class="breadcrumbs__link" href="/upage/deployment-guide"><span>部署指南</span></a></li><li class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link">Docker Compose 部署</span></li></ul></nav><div class="tocCollapsible_S5VF theme-doc-toc-mobile tocMobile_gigA"><button type="button" class="clean-btn tocCollapsibleButton_wmrO">本页总览</button></div><div class="theme-doc-markdown markdown"><header><h1>Docker Compose 部署</h1></header>
<p>本文档详细介绍如何使用 Docker Compose 部署 UPage这是一种更便捷的方式来管理 UPage 的部署。</p>
<h2 class="anchor anchorWithStickyNavbar_hmm4" id="前置条件">前置条件<a href="#前置条件" class="hash-link" aria-label="前置条件的直接链接" title="前置条件的直接链接" translate="no"></a></h2>
<p>在开始之前,请确保您的系统满足以下要求:</p>
<ul>
<li>Docker 已安装(推荐 Docker 20.10.0 或更高版本)</li>
<li>Docker Compose 已安装(推荐 Docker Compose 1.29.0 或更高版本)</li>
<li>至少 2GB 可用内存</li>
<li>至少 2GB 可用磁盘空间</li>
<li>互联网连接(用于拉取 Docker 镜像和访问大模型 API</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_hmm4" id="安装-docker-和-docker-compose">安装 Docker 和 Docker Compose<a href="#安装-docker-和-docker-compose" class="hash-link" aria-label="安装 Docker 和 Docker Compose的直接链接" title="安装 Docker 和 Docker Compose的直接链接" translate="no"></a></h3>
<p>如果您的系统未安装 Docker请参考<a href="https://docs.docker.com/engine/install/" target="_blank" rel="noopener noreferrer">Docker 官方文档</a>进行安装。
如果您的系统未安装 Docker Compose请参考<a href="https://docs.docker.com/compose/install/" target="_blank" rel="noopener noreferrer">Docker Compose 官方文档</a>进行安装。</p>
<h2 class="anchor anchorWithStickyNavbar_hmm4" id="使用-docker-compose-部署">使用 Docker Compose 部署<a href="#使用-docker-compose-部署" class="hash-link" aria-label="使用 Docker Compose 部署的直接链接" title="使用 Docker Compose 部署的直接链接" translate="no"></a></h2>
<h3 class="anchor anchorWithStickyNavbar_hmm4" id="准备目录">准备目录<a href="#准备目录" class="hash-link" aria-label="准备目录的直接链接" title="准备目录的直接链接" translate="no"></a></h3>
<p>创建必要的目录用于持久化数据,例如 <code>~/upage</code></p>
<div class="language-bash codeBlockContainer_tLQ_ theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_HMSW"><pre tabindex="0" class="prism-code language-bash codeBlock_HMKa thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_tPUF"><span class="token-line" style="color:#393A34"><span class="token plain">mkdir -p ~/upage/data</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">mkdir -p ~/upage/logs</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">mkdir -p ~/upage/storage</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">cd ~/upage</span><br></span></code></pre></div></div>
<div class="theme-admonition theme-admonition-tip admonition_CpQR alert alert--success"><div class="admonitionHeading_lTaP"><span class="admonitionIcon_Sec2"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>提示</div><div class="admonitionContent__UXo"><p>UPage 所有数据与日志均存储在此目录中,请妥善保管。</p></div></div>
<h3 class="anchor anchorWithStickyNavbar_hmm4" id="创建配置文件">创建配置文件<a href="#创建配置文件" class="hash-link" aria-label="创建配置文件的直接链接" title="创建配置文件的直接链接" translate="no"></a></h3>
<p>创建 <code>docker-compose.yml</code> 文件:</p>
<div class="language-yaml codeBlockContainer_tLQ_ theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_HMSW"><pre tabindex="0" class="prism-code language-yaml codeBlock_HMKa thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_tPUF"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">version</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;3.9&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">services</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">upage</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">image</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> upage</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">ai</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">production</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">restart</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> unless</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">stopped</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">ports</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;${PORT:-3000}:3000&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">environment</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> LLM_PROVIDER=$</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">LLM_PROVIDER</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> PROVIDER_BASE_URL=$</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">PROVIDER_BASE_URL</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> PROVIDER_API_KEY=$</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">PROVIDER_API_KEY</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> LLM_DEFAULT_MODEL=$</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">LLM_DEFAULT_MODEL</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> LLM_MINOR_MODEL=$</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">LLM_MINOR_MODEL</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">volumes</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> ./data</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">/app/data</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> ./logs</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">/app/logs</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> ./storage</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">/app/storage</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">volumes</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> upage</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">db</span><span class="token punctuation" style="color:#393A34">:</span><br></span></code></pre></div></div>
<h3 class="anchor anchorWithStickyNavbar_hmm4" id="启动服务">启动服务<a href="#启动服务" class="hash-link" aria-label="启动服务的直接链接" title="启动服务的直接链接" translate="no"></a></h3>
<p><code>docker-compose.yml</code> 文件所在目录执行:</p>
<div class="language-bash codeBlockContainer_tLQ_ theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_HMSW"><pre tabindex="0" class="prism-code language-bash codeBlock_HMKa thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_tPUF"><span class="token-line" style="color:#393A34"><span class="token plain">docker-compose up -d</span><br></span></code></pre></div></div>
<h3 class="anchor anchorWithStickyNavbar_hmm4" id="服务管理">服务管理<a href="#服务管理" class="hash-link" aria-label="服务管理的直接链接" title="服务管理的直接链接" translate="no"></a></h3>
<p>使用 Docker Compose 管理服务的常用命令:</p>
<div class="language-bash codeBlockContainer_tLQ_ theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_HMSW"><pre tabindex="0" class="prism-code language-bash codeBlock_HMKa thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_tPUF"><span class="token-line" style="color:#393A34"><span class="token plain"># 启动服务</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker-compose up -d</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 停止服务</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker-compose down</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 重启服务</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker-compose restart</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 查看服务日志</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker-compose logs</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 查看服务状态</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker-compose ps</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_hmm4" id="环境变量配置">环境变量配置<a href="#环境变量配置" class="hash-link" aria-label="环境变量配置的直接链接" title="环境变量配置的直接链接" translate="no"></a></h2>
<p>UPage 支持通过环境变量进行配置。以下是一些比较重要的环境变量:</p>
<div class="theme-admonition theme-admonition-tip admonition_CpQR alert alert--success"><div class="admonitionHeading_lTaP"><span class="admonitionIcon_Sec2"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>提示</div><div class="admonitionContent__UXo"><p>完整的配置请参考<a href="/upage/configuration">配置参考</a></p></div></div>
<h3 class="anchor anchorWithStickyNavbar_hmm4" id="基础配置">基础配置<a href="#基础配置" class="hash-link" aria-label="基础配置的直接链接" title="基础配置的直接链接" translate="no"></a></h3>
<table><thead><tr><th>环境变量</th><th>描述</th><th>默认值</th></tr></thead><tbody><tr><td><code>PORT</code></td><td>服务监听端口</td><td><code>3000</code></td></tr><tr><td><code>NODE_ENV</code></td><td>Node.js 环境</td><td><code>production</code></td></tr><tr><td><code>OPERATING_ENV</code></td><td>运行环境</td><td><code>production</code></td></tr><tr><td><code>LOG_LEVEL</code></td><td>日志级别</td><td><code>debug</code></td></tr><tr><td><code>USAGE_LOG_FILE</code></td><td>是否开启文件日志</td><td><code>true</code></td></tr><tr><td><code>MAX_UPLOAD_SIZE_MB</code></td><td>附件上传的最大大小 (MB)</td><td><code>5</code></td></tr><tr><td><code>STORAGE_DIR</code></td><td>资源文件存储位置</td><td><code>/app/storage</code></td></tr></tbody></table>
<h3 class="anchor anchorWithStickyNavbar_hmm4" id="模型提供商配置">模型提供商配置<a href="#模型提供商配置" class="hash-link" aria-label="模型提供商配置的直接链接" title="模型提供商配置的直接链接" translate="no"></a></h3>
<p>根据您选择的 AI 提供商,您还需要配置相应的 API 密钥和基础 URL例如</p>
<table><thead><tr><th>环境变量</th><th>描述</th><th>必填</th><th>示例</th></tr></thead><tbody><tr><td><code>LLM_PROVIDER</code></td><td>默认 LLM 提供商</td><td></td><td><code>OpenAILike</code></td></tr><tr><td><code>PROVIDER_BASE_URL</code></td><td>OpenAI 兼容 API 基础 URL</td><td></td><td><code>https://your-api-base-url</code></td></tr><tr><td><code>PROVIDER_API_KEY</code></td><td>OpenAI 兼容 API 密钥</td><td></td><td><code>your-openai-like-api-key</code></td></tr></tbody></table>
<h3 class="anchor anchorWithStickyNavbar_hmm4" id="大模型配置">大模型配置<a href="#大模型配置" class="hash-link" aria-label="大模型配置的直接链接" title="大模型配置的直接链接" translate="no"></a></h3>
<table><thead><tr><th>环境变量</th><th>描述</th><th>必填</th><th>示例</th></tr></thead><tbody><tr><td><code>LLM_DEFAULT_MODEL</code></td><td>生成页面所使用的主要模型</td><td></td><td><code>gpt-4-turbo</code></td></tr><tr><td><code>LLM_MINOR_MODEL</code></td><td>辅助页面生成所使用的次级模型</td><td></td><td><code>gpt-3.5-turbo</code></td></tr></tbody></table>
<h2 class="anchor anchorWithStickyNavbar_hmm4" id="升级-upage">升级 UPage<a href="#升级-upage" class="hash-link" aria-label="升级 UPage的直接链接" title="升级 UPage的直接链接" translate="no"></a></h2>
<p>当有新版本发布时,您可以按照以下步骤升级 UPage</p>
<div class="language-bash codeBlockContainer_tLQ_ theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_HMSW"><pre tabindex="0" class="prism-code language-bash codeBlock_HMKa thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_tPUF"><span class="token-line" style="color:#393A34"><span class="token plain">docker-compose pull</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker-compose down</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker-compose up -d</span><br></span></code></pre></div></div>
<h2 class="anchor anchorWithStickyNavbar_hmm4" id="下一步">下一步<a href="#下一步" class="hash-link" aria-label="下一步的直接链接" title="下一步的直接链接" translate="no"></a></h2>
<ul>
<li>阅读<a href="/upage/user-guide/basics">用户指南</a>学习如何使用 UPage 创建网页</li>
<li>探索<a href="/upage/configuration">配置参考</a>了解所有可用的配置选项</li>
<li>探索<a href="/upage/deployment/logto">Logto 认证集成</a>了解如何集成 Logto 实现用户认证</li>
</ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/halo-dev/upage/edit/main/docs/content/content/deployment/docker-compose.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit__ZHw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>编辑此页</a></div><div class="col lastUpdated_CpfT"></div></div></footer></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="文件选项卡"><a class="pagination-nav__link pagination-nav__link--prev" href="/upage/deployment/docker"><div class="pagination-nav__sublabel">上一页</div><div class="pagination-nav__label">Docker 部署</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/upage/deployment/source"><div class="pagination-nav__sublabel">下一页</div><div class="pagination-nav__label">源码部署</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_dKl6 thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#前置条件" class="table-of-contents__link toc-highlight">前置条件</a><ul><li><a href="#安装-docker-和-docker-compose" class="table-of-contents__link toc-highlight">安装 Docker 和 Docker Compose</a></li></ul></li><li><a href="#使用-docker-compose-部署" class="table-of-contents__link toc-highlight">使用 Docker Compose 部署</a><ul><li><a href="#准备目录" class="table-of-contents__link toc-highlight">准备目录</a></li><li><a href="#创建配置文件" class="table-of-contents__link toc-highlight">创建配置文件</a></li><li><a href="#启动服务" class="table-of-contents__link toc-highlight">启动服务</a></li><li><a href="#服务管理" class="table-of-contents__link toc-highlight">服务管理</a></li></ul></li><li><a href="#环境变量配置" class="table-of-contents__link toc-highlight">环境变量配置</a><ul><li><a href="#基础配置" class="table-of-contents__link toc-highlight">基础配置</a></li><li><a href="#模型提供商配置" class="table-of-contents__link toc-highlight">模型提供商配置</a></li><li><a href="#大模型配置" class="table-of-contents__link toc-highlight">大模型配置</a></li></ul></li><li><a href="#升级-upage" class="table-of-contents__link toc-highlight">升级 UPage</a></li><li><a href="#下一步" class="table-of-contents__link toc-highlight">下一步</a></li></ul></div></div></div></div></main></div></div></div><footer class="theme-layout-footer footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class="footer__title">文档</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/upage/quick-start">快速开始</a></li><li class="footer__item"><a class="footer__link-item" href="/upage/category/deployment-guide">部署指南</a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">社区</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/halo-dev/upage/issues" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub Issues<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_xtnk"><use href="#theme-svg-external-link"></use></svg></a></li><li class="footer__item"><a href="https://github.com/halo-dev/upage/discussions" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub Discussions<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_xtnk"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">更多</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/halo-dev/upage" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_xtnk"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2025 凌霞软件. Built with Docusaurus.</div></div></div></footer></div>
</body>
</html>