部署指导手册.html 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1" />
  6. <title>中科兴皖 Docker 部署指导手册</title>
  7. <style>
  8. :root {
  9. --primary: #10b981;
  10. --primary-dark: #059669;
  11. --primary-bg: #ecfdf5;
  12. --text: #0f172a;
  13. --text-muted: #64748b;
  14. --border: #e2e8f0;
  15. --warn-bg: #fffbeb;
  16. --warn-border: #f59e0b;
  17. --danger-bg: #fef2f2;
  18. --danger-border: #ef4444;
  19. --code-bg: #f8fafc;
  20. --radius: 10px;
  21. --font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC",
  22. "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
  23. }
  24. * { box-sizing: border-box; }
  25. html { scroll-behavior: smooth; }
  26. body {
  27. margin: 0;
  28. font-family: var(--font);
  29. font-size: 15px;
  30. line-height: 1.65;
  31. color: var(--text);
  32. background: #f1f5f9;
  33. }
  34. .layout {
  35. display: grid;
  36. grid-template-columns: 260px 1fr;
  37. min-height: 100vh;
  38. max-width: 1280px;
  39. margin: 0 auto;
  40. background: #fff;
  41. box-shadow: 0 0 40px rgba(15, 23, 42, 0.06);
  42. }
  43. @media (max-width: 900px) {
  44. .layout { grid-template-columns: 1fr; }
  45. .sidebar { position: static; height: auto; border-right: none; border-bottom: 1px solid var(--border); }
  46. }
  47. .sidebar {
  48. position: sticky;
  49. top: 0;
  50. height: 100vh;
  51. overflow-y: auto;
  52. padding: 24px 20px;
  53. background: #fafbfc;
  54. border-right: 1px solid var(--border);
  55. }
  56. .sidebar h1 {
  57. font-size: 17px;
  58. margin: 0 0 4px;
  59. color: var(--primary-dark);
  60. }
  61. .sidebar .sub {
  62. font-size: 12px;
  63. color: var(--text-muted);
  64. margin-bottom: 20px;
  65. }
  66. .sidebar nav a {
  67. display: block;
  68. padding: 6px 10px;
  69. margin: 2px 0;
  70. font-size: 13px;
  71. color: var(--text);
  72. text-decoration: none;
  73. border-radius: 6px;
  74. }
  75. .sidebar nav a:hover { background: var(--primary-bg); color: var(--primary-dark); }
  76. main { padding: 32px 40px 64px; min-width: 0; }
  77. @media (max-width: 600px) { main { padding: 20px 16px 48px; } }
  78. h2 {
  79. font-size: 22px;
  80. margin: 40px 0 16px;
  81. padding-bottom: 8px;
  82. border-bottom: 2px solid var(--primary-bg);
  83. color: var(--primary-dark);
  84. }
  85. h2:first-of-type { margin-top: 0; }
  86. h3 { font-size: 17px; margin: 24px 0 12px; }
  87. p { margin: 0 0 12px; }
  88. ul, ol { margin: 0 0 16px; padding-left: 1.4em; }
  89. li { margin-bottom: 6px; }
  90. table {
  91. width: 100%;
  92. border-collapse: collapse;
  93. margin: 12px 0 20px;
  94. font-size: 14px;
  95. }
  96. th, td {
  97. border: 1px solid var(--border);
  98. padding: 10px 12px;
  99. text-align: left;
  100. vertical-align: top;
  101. }
  102. th { background: var(--primary-bg); font-weight: 600; }
  103. pre, code {
  104. font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
  105. font-size: 13px;
  106. }
  107. pre {
  108. background: var(--code-bg);
  109. border: 1px solid var(--border);
  110. border-radius: 8px;
  111. padding: 14px 16px;
  112. overflow-x: auto;
  113. margin: 12px 0 20px;
  114. line-height: 1.5;
  115. }
  116. code { background: var(--code-bg); padding: 2px 6px; border-radius: 4px; }
  117. pre code { background: none; padding: 0; }
  118. .hero {
  119. background: linear-gradient(135deg, var(--primary-bg) 0%, #fff 60%);
  120. border: 1px solid #a7f3d0;
  121. border-radius: var(--radius);
  122. padding: 24px 28px;
  123. margin-bottom: 28px;
  124. }
  125. .hero h2 { border: none; margin: 0 0 8px; padding: 0; font-size: 24px; }
  126. .hero p { margin: 0; color: var(--text-muted); }
  127. .badge {
  128. display: inline-block;
  129. background: var(--primary);
  130. color: #fff;
  131. font-size: 12px;
  132. font-weight: 600;
  133. padding: 3px 10px;
  134. border-radius: 999px;
  135. margin-right: 8px;
  136. vertical-align: middle;
  137. }
  138. .steps { counter-reset: step; list-style: none; padding: 0; }
  139. .steps > li {
  140. counter-increment: step;
  141. position: relative;
  142. padding: 16px 16px 16px 52px;
  143. margin-bottom: 12px;
  144. background: #fafbfc;
  145. border: 1px solid var(--border);
  146. border-radius: var(--radius);
  147. }
  148. .steps > li::before {
  149. content: counter(step);
  150. position: absolute;
  151. left: 16px;
  152. top: 16px;
  153. width: 28px;
  154. height: 28px;
  155. line-height: 28px;
  156. text-align: center;
  157. background: var(--primary);
  158. color: #fff;
  159. font-weight: 700;
  160. font-size: 14px;
  161. border-radius: 50%;
  162. }
  163. .steps h3 { margin: 0 0 8px; font-size: 16px; }
  164. .box {
  165. border-radius: 8px;
  166. padding: 14px 16px;
  167. margin: 16px 0;
  168. font-size: 14px;
  169. }
  170. .box-warn { background: var(--warn-bg); border-left: 4px solid var(--warn-border); }
  171. .box-danger { background: var(--danger-bg); border-left: 4px solid var(--danger-border); }
  172. .box-info { background: var(--primary-bg); border-left: 4px solid var(--primary); }
  173. .checklist { list-style: none; padding: 0; }
  174. .checklist li {
  175. padding: 8px 0 8px 28px;
  176. position: relative;
  177. border-bottom: 1px dashed var(--border);
  178. }
  179. .checklist li::before {
  180. content: "☐";
  181. position: absolute;
  182. left: 0;
  183. color: var(--primary);
  184. font-size: 18px;
  185. }
  186. .arch {
  187. background: var(--code-bg);
  188. border: 1px solid var(--border);
  189. border-radius: 8px;
  190. padding: 16px;
  191. font-family: ui-monospace, monospace;
  192. font-size: 13px;
  193. line-height: 1.45;
  194. white-space: pre;
  195. overflow-x: auto;
  196. }
  197. .tree {
  198. font-family: ui-monospace, monospace;
  199. font-size: 13px;
  200. background: var(--code-bg);
  201. padding: 16px;
  202. border-radius: 8px;
  203. border: 1px solid var(--border);
  204. }
  205. footer {
  206. margin-top: 48px;
  207. padding-top: 20px;
  208. border-top: 1px solid var(--border);
  209. font-size: 13px;
  210. color: var(--text-muted);
  211. }
  212. </style>
  213. </head>
  214. <body>
  215. <div class="layout">
  216. <aside class="sidebar">
  217. <h1>中科兴皖</h1>
  218. <p class="sub">Docker 部署指导手册<br />适用:甲方运维人员</p>
  219. <nav>
  220. <a href="#overview">概述</a>
  221. <a href="#requirements">环境要求</a>
  222. <a href="#package">交付包说明</a>
  223. <a href="#mirror">镜像加速(国内)</a>
  224. <a href="#install">安装步骤</a>
  225. <a href="#config">配置说明</a>
  226. <a href="#verify">验收检查</a>
  227. <a href="#architecture">服务架构</a>
  228. <a href="#profiles">部署模式</a>
  229. <a href="#ops">日常运维</a>
  230. <a href="#backup">备份与升级</a>
  231. <a href="#faq">常见问题</a>
  232. </nav>
  233. </aside>
  234. <main>
  235. <div class="hero">
  236. <h2><span class="badge">Docker</span>中科兴皖系统部署指导</h2>
  237. <p>
  238. 本手册帮助您在 Linux 服务器上完成<strong>预构建镜像</strong>方式的安装。
  239. 交付包不含前后端源码,首次启动需联网拉取 MySQL / Redis / MinIO 等基础镜像。
  240. 对外访问端口默认为 <strong>8112</strong>。
  241. </p>
  242. </div>
  243. <section id="overview">
  244. <h2>1. 概述</h2>
  245. <table>
  246. <tr><th>项目</th><th>说明</th></tr>
  247. <tr><td>部署方式</td><td><code>docker load</code> 导入应用镜像 + <code>docker compose up -d</code></td></tr>
  248. <tr><td>应用镜像</td><td><code>zkxw-backend</code>、<code>zkxw-web</code>(已预构建,无需编译)</td></tr>
  249. <tr><td>CPU 架构</td><td><code>linux/amd64</code>(常见 x86 云主机;ARM 服务器需联系交付方重新打包)</td></tr>
  250. <tr><td>对外端口</td><td><strong>8112</strong>(Web 管理端 + API 反代)</td></tr>
  251. <tr><td>默认账号</td><td><code>admin</code> / <code>111111</code>(首次登录后请立即修改)</td></tr>
  252. </table>
  253. <div class="box box-info">
  254. <strong>说明:</strong>MySQL、Redis、MinIO 仅在 Docker 内部网络通信,<strong>不占用</strong>宿主机 3306 / 6379 / 9000 端口,一般不会与贵方已有中间件冲突。
  255. </div>
  256. </section>
  257. <section id="requirements">
  258. <h2>2. 环境要求</h2>
  259. <table>
  260. <tr><th>项</th><th>要求</th></tr>
  261. <tr><td>操作系统</td><td>Linux x86_64(推荐 Ubuntu 22.04、CentOS 7+)</td></tr>
  262. <tr><td>Docker</td><td>≥ 24.0</td></tr>
  263. <tr><td>Docker Compose</td><td>v2(使用 <code>docker compose</code> 子命令)</td></tr>
  264. <tr><td>网络</td><td>可访问 Docker Hub,或已配置国内 Registry 镜像加速</td></tr>
  265. <tr><td>硬件建议</td><td>4 核 CPU、8 GB 内存、磁盘 ≥ 50 GB</td></tr>
  266. <tr><td>端口</td><td>宿主机 <strong>8112</strong> 未被占用;防火墙 / 安全组已放行 TCP 8112</td></tr>
  267. </table>
  268. <p>安装前请执行以下命令确认环境:</p>
  269. <pre><code>docker --version
  270. docker compose version
  271. docker info | grep -A2 "Registry Mirrors" # 国内环境建议已配置加速</code></pre>
  272. </section>
  273. <section id="package">
  274. <h2>3. 交付包目录说明</h2>
  275. <p>解压 <code>zkxw-docker-deploy-&lt;版本&gt;.tar.gz</code> 后,目录结构如下:</p>
  276. <div class="tree">zkxw-docker-deploy-&lt;版本&gt;/
  277. ├── images/
  278. │ └── zkxw-app-images.tar # 预构建前后端镜像(必做 docker load)
  279. ├── deploy/docker/
  280. │ ├── docker-compose.yml
  281. │ ├── .env.example # 复制为 .env 后修改密码
  282. │ ├── mysql/init/
  283. │ └── 部署指导手册.html # 本手册
  284. ├── docs/sql/zkxw.sql # 首次部署自动建库(非业务源码)
  285. ├── 部署说明.md # Markdown 版说明(可选阅读)
  286. └── VERSION.txt # 版本与镜像 tag 信息</div>
  287. <div class="box box-warn">
  288. <strong>不包含:</strong>后端 Python 源码、前端 Vue 源码、Dockerfile。数据库脚本仅为表结构与基线数据。
  289. </div>
  290. </section>
  291. <section id="mirror">
  292. <h2>4. Docker 镜像加速(国内强烈建议)</h2>
  293. <p>
  294. 应用镜像通过 <code>docker load</code> 本地导入;但首次 <code>docker compose up</code> 仍需从网络拉取
  295. <code>mysql:5.7.36</code>、<code>redis:7-alpine</code>、<code>minio/minio</code> 等基础镜像。
  296. 国内服务器建议配置 Registry 镜像加速。
  297. </p>
  298. <p>编辑 <code>/etc/docker/daemon.json</code>(示例,任选可用加速地址):</p>
  299. <pre><code>{
  300. "registry-mirrors": [
  301. "https://docker.1ms.run",
  302. "https://docker.m.daocloud.io"
  303. ]
  304. }</code></pre>
  305. <pre><code>sudo systemctl daemon-reload
  306. sudo systemctl restart docker</code></pre>
  307. <p>若贵司已有阿里云 ACR 等专属加速地址,请优先使用官方提供的 URL。</p>
  308. </section>
  309. <section id="install">
  310. <h2>5. 安装步骤</h2>
  311. <p>以下命令假设交付包已上传至 <code>/opt/zkxw</code>,请按实际路径调整。</p>
  312. <ol class="steps">
  313. <li>
  314. <h3>解压交付包</h3>
  315. <pre><code>mkdir -p /opt/zkxw && cd /opt/zkxw
  316. tar -xzf zkxw-docker-deploy-*.tar.gz
  317. cd zkxw-docker-deploy-*</code></pre>
  318. </li>
  319. <li>
  320. <h3>导入应用镜像</h3>
  321. <pre><code>docker load -i images/zkxw-app-images.tar
  322. docker images | grep zkxw-</code></pre>
  323. <p>请记下镜像 tag(如 <code>zkxw-backend:v1.0.0</code>),下一步配置须一致。</p>
  324. </li>
  325. <li>
  326. <h3>配置环境变量</h3>
  327. <pre><code>cd deploy/docker
  328. cp .env.example .env
  329. vi .env</code></pre>
  330. <p>至少修改:<code>MYSQL_ROOT_PASSWORD</code>、<code>DATABASE_URL</code> 中的密码、<code>SECRET_KEY</code>、<code>MINIO_SECRET_KEY</code>。</p>
  331. <p>确认 <code>ZKXW_BACKEND_IMAGE</code>、<code>ZKXW_WEB_IMAGE</code> 与 <code>docker images</code> 显示的 tag 一致(可参考包内 <code>VERSION.txt</code>)。</p>
  332. </li>
  333. <li>
  334. <h3>启动全部服务</h3>
  335. <pre><code>docker compose up -d</code></pre>
  336. <p>首次启动会自动拉取基础镜像,MySQL 导入 <code>zkxw.sql</code> 约需 <strong>1~3 分钟</strong>,请耐心等待。</p>
  337. </li>
  338. <li>
  339. <h3>(可选)查看启动进度</h3>
  340. <pre><code>docker compose ps
  341. docker compose logs -f mysql # 可选,Ctrl+C 仅退出日志,不停止服务
  342. docker compose logs -f backend</code></pre>
  343. </li>
  344. </ol>
  345. </section>
  346. <section id="config">
  347. <h2>6. 配置说明(.env 要点)</h2>
  348. <p>默认模式 <code>COMPOSE_PROFILES=full</code>:自带 MySQL、Redis、MinIO。</p>
  349. <table>
  350. <tr><th>变量</th><th>说明</th></tr>
  351. <tr><td><code>HTTP_PORT</code></td><td>对外 HTTP 端口,默认 <strong>8112</strong></td></tr>
  352. <tr><td><code>ZKXW_BACKEND_IMAGE</code></td><td>后端镜像名:tag,须与 docker load 一致</td></tr>
  353. <tr><td><code>ZKXW_WEB_IMAGE</code></td><td>前端镜像名:tag,须与 docker load 一致</td></tr>
  354. <tr><td><code>MYSQL_ROOT_PASSWORD</code></td><td>MySQL root 密码(full 模式)</td></tr>
  355. <tr><td><code>DATABASE_URL</code></td><td>数据库连接串,密码须与上面一致</td></tr>
  356. <tr><td><code>SECRET_KEY</code></td><td>JWT 密钥,生产环境务必改为长随机串</td></tr>
  357. <tr><td><code>REDIS_HOST</code></td><td>full 模式填 <code>redis</code></td></tr>
  358. <tr><td><code>MINIO_ENDPOINT</code></td><td>full 模式填 <code>minio:9000</code></td></tr>
  359. <tr><td><code>MINIO_BASE_URL</code></td><td>保持 <code>/minio/zkxw</code>(由 Web 镜像内 Nginx 反代)</td></tr>
  360. <tr><td><code>API_ENCRYPT_ENABLED</code></td><td>默认 <code>false</code>,Docker 交付为明文 API</td></tr>
  361. </table>
  362. <div class="box box-danger">
  363. <strong>切勿将 .env 提交到版本库。</strong>修改密码后若服务已启动,执行 <code>docker compose up -d</code> 并 <code>docker compose restart backend</code>。
  364. </div>
  365. </section>
  366. <section id="verify">
  367. <h2>7. 验收检查</h2>
  368. <ul class="checklist">
  369. <li><code>docker compose ps</code> 中 mysql、redis、minio、backend、web 均为 running(backend/web 可为 healthy)</li>
  370. <li>服务器本机:<code>curl -s http://127.0.0.1:8112/health</code> 返回正常</li>
  371. <li>浏览器访问 <code>http://&lt;服务器IP&gt;:8112/</code> 可打开登录页</li>
  372. <li>使用 <code>admin</code> / <code>111111</code> 登录成功(登录后请改密)</li>
  373. <li>防火墙 / 安全组已放行 TCP 8112</li>
  374. </ul>
  375. <table>
  376. <tr><th>地址</th><th>说明</th></tr>
  377. <tr><td><code>http://&lt;IP&gt;:8112/</code></td><td>Web 管理端</td></tr>
  378. <tr><td><code>http://&lt;IP&gt;:8112/health</code></td><td>健康检查</td></tr>
  379. <tr><td><code>http://&lt;IP&gt;:8112/docs</code></td><td>Swagger API 文档</td></tr>
  380. </table>
  381. </section>
  382. <section id="architecture">
  383. <h2>8. 服务架构</h2>
  384. <div class="arch">浏览器 :8112
  385. └── web(Nginx + 前端静态)
  386. ├── /api/* → backend:8111(FastAPI)
  387. └── /minio/zkxw/* → minio:9000(附件,容器内网络)
  388. backend → mysql:3306(业务库 zkxw)
  389. → redis:6379(会话)
  390. → minio:9000(对象存储)</div>
  391. </section>
  392. <section id="profiles">
  393. <h2>9. 部署模式(高级)</h2>
  394. <p>通过 <code>.env</code> 中 <code>COMPOSE_PROFILES</code> 切换,默认无需修改。</p>
  395. <h3>9.1 full(默认,全栈)</h3>
  396. <pre><code>COMPOSE_PROFILES=full</code></pre>
  397. <p>启动 MySQL + Redis + MinIO + 后端 + 前端,适合独立部署一台服务器。</p>
  398. <h3>9.2 app(仅应用,连接已有中间件)</h3>
  399. <p>若贵方已有 MySQL、Redis、MinIO,可设为 <code>COMPOSE_PROFILES=app</code>,并将 <code>DATABASE_URL</code>、<code>REDIS_HOST</code>、<code>MINIO_*</code> 改为实际地址。具体示例见 <code>deploy/docker/.env.example</code> 注释。</p>
  400. <h3>9.3 app,storage(外部库 + 自带 MinIO)</h3>
  401. <p>已有 MySQL/Redis,仅 MinIO 由本 compose 提供时使用。</p>
  402. <div class="box box-warn">
  403. 使用外部 MinIO 且不在 Docker 网络内时,可能需要交付方重新构建 Web 镜像。一般建议先按默认 <code>full</code> 模式完成安装。
  404. </div>
  405. </section>
  406. <section id="ops">
  407. <h2>10. 日常运维命令</h2>
  408. <p>以下命令均在 <code>deploy/docker</code> 目录执行:</p>
  409. <pre><code># 查看状态
  410. docker compose ps
  411. # 查看日志
  412. docker compose logs -f backend
  413. docker compose logs -f web
  414. # 重启
  415. docker compose restart
  416. # 停止(不删数据卷)
  417. docker compose down
  418. # 进入后端容器
  419. docker compose exec backend bash</code></pre>
  420. <div class="box box-danger">
  421. <strong>警告:</strong><code>docker compose down -v</code> 会删除所有数据卷(MySQL、MinIO 等),导致数据丢失。仅在首次部署失败且可接受清空数据时使用。
  422. </div>
  423. </section>
  424. <section id="backup">
  425. <h2>11. 备份与升级</h2>
  426. <h3>11.1 数据卷</h3>
  427. <table>
  428. <tr><th>卷名(前缀 zkxw_)</th><th>内容</th></tr>
  429. <tr><td>mysql_data</td><td>MySQL 业务数据</td></tr>
  430. <tr><td>redis_data</td><td>Redis 持久化</td></tr>
  431. <tr><td>minio_data</td><td>附件对象</td></tr>
  432. <tr><td>backend_uploads</td><td>本地上传目录(若使用本地存储)</td></tr>
  433. </table>
  434. <h3>11.2 MySQL 备份示例</h3>
  435. <pre><code>docker compose exec mysql mysqldump -uroot -p zkxw > zkxw_backup.sql</code></pre>
  436. <h3>11.3 版本升级</h3>
  437. <ol>
  438. <li>备份数据库与 MinIO 数据</li>
  439. <li>解压新版本交付包,<code>docker load -i images/zkxw-app-images.tar</code></li>
  440. <li>更新 <code>.env</code> 中 <code>ZKXW_BACKEND_IMAGE</code>、<code>ZKXW_WEB_IMAGE</code></li>
  441. <li>在 <code>deploy/docker</code> 执行 <code>docker compose up -d</code></li>
  442. <li><code>curl -s http://127.0.0.1:8112/health</code> 验收</li>
  443. </ol>
  444. <p>若仅有数据库结构变更,请使用交付方提供的增量 SQL,<strong>不要</strong>删除已有 mysql_data 卷。</p>
  445. </section>
  446. <section id="faq">
  447. <h2>12. 常见问题</h2>
  448. <h3>无法访问 8112</h3>
  449. <ul>
  450. <li>检查云主机安全组 / 防火墙是否放行 TCP 8112</li>
  451. <li><code>docker compose ps</code> 确认 web 为 running</li>
  452. <li><code>docker compose logs web</code> 查看 Nginx 日志</li>
  453. </ul>
  454. <h3>/api 返回 502</h3>
  455. <ul>
  456. <li>后端未就绪:<code>docker compose logs backend</code></li>
  457. <li>首次部署 MySQL 仍在导入:等待 1~3 分钟后重试</li>
  458. </ul>
  459. <h3>拉取 mysql/redis/minio 镜像失败或很慢</h3>
  460. <p>请按第 4 节配置 Docker Registry 镜像加速后,重新执行 <code>docker compose up -d</code>。</p>
  461. <h3>附件无法显示</h3>
  462. <ul>
  463. <li>确认 <code>STORAGE_TYPE=minio</code></li>
  464. <li><code>docker compose logs minio-init</code> 应显示 bucket 创建成功</li>
  465. <li>浏览器中附件 URL 应为 <code>/minio/zkxw/...</code></li>
  466. </ul>
  467. <h3>首次部署数据库初始化失败(可清空重来)</h3>
  468. <pre><code>cd deploy/docker
  469. docker compose down -v
  470. docker compose up -d</code></pre>
  471. <p>此操作会清空所有数据,仅适用于尚未正式上线的环境。</p>
  472. </section>
  473. <footer>
  474. <p>中科兴皖 · Docker 部署指导手册 · 与交付包内 <code>deploy/docker/README.md</code> 保持一致</p>
  475. <p>技术支持请联系项目交付方。安装完成后请修改默认管理员密码。</p>
  476. </footer>
  477. </main>
  478. </div>
  479. </body>
  480. </html>