跳转至

用 Docker 部署 OI Wiki

本頁面將介紹使用 Docker 部署 OI Wiki 環境的方式。

Warning

以下步驟須在 root 用户下或 docker 組用户下執行。

拉取 OI Wiki 鏡像

1
2
3
4
5
6
7
# 以下命令在主機中運行其中一個即可
# Docker Hub 鏡像(官方鏡像倉庫)
docker pull 24oi/oi-wiki
# DaoCloud Hub 鏡像(國內鏡像倉庫)
docker pull daocloud.io/sirius/oi-wiki
# Tencent Hub 鏡像(國內鏡像倉庫)
docker pull ccr.ccs.tencentyun.com/oi-wiki/oi-wiki

自行構建鏡像

1
2
3
4
5
6
# 以下命令在主機中運行
# 克隆 Git 倉庫
git clone https://github.com/OI-wiki/OI-wiki.git
cd OI-wiki/
# 構建鏡像
docker build -t [name][:tag] . --build-arg [variable1]=[value1] [variable2]=[value2]...
  • (必須)設置 [name] 以設置鏡像名,(可選)設置 [tag] 以設置鏡像標籤(若設置,則運行時鏡像名由兩部分構成)。
  • 可以通過 --build-arg 參數設置環境變量。

可以使用的環境變量:

  • 可以設置 WIKI_REPO 來使用 Wiki 倉庫的鏡像站點(當未設置時自動使用 GitHub)
  • 可以設置 PYPI_MIRROR 來使用 PyPI 倉庫的鏡像站點(當未設置時自動使用官方 PyPI)
    • 在國內建議使用 TUNA 鏡像站 https://pypi.tuna.tsinghua.edu.cn/simple/
  • 可以設置 LISTEN_IP 來更改監聽 IP(當未設置時為 0.0.0.0,即監聽所有 IP 的訪問)
  • 可以設置 LISTEN_PORT 來更改監聽端口(當未設置時為 8000

示例:

1
2
docker build -t OI_Wiki . --build-arg WIKI_REPO=https://hub.fastgit.xyz/OI-wiki/OI-wiki.git PYPI_MIRROR=https://pypi.tuna.tsinghua.edu.cn/simple/
# 構建一個名為 OI_Wiki (標籤默認)的鏡像,使用 FastGit 服務加速克隆,使用 TUNA 鏡像站。

運行容器

1
2
# 以下命令在主機中運行
docker run -d -it [image]
  • (必須)設置 [image] 以設置鏡像。例如,從 Docker Hub 拉取的為 24oi/oi-wiki;DaoCloud Hub 拉取的則為 daocloud.io/sirius/oi-wiki
  • (必須)設置 -p [port]:8000 以映射容器端口至主機端口(不寫該語句則默認為不暴露端口。設置時請替換 [port] 為主機端口)。設置後可以在主機使用 http://127.0.0.1:[port] 訪問 OI Wiki
  • 設置 --name [name] 以設置容器名字。(默認空。設置時請替換 [name] 為自定義的容器名字。若想查看容器 id,則輸入 docker ps

使用容器

Note

示例基於 Ubuntu latest 部署。

進入容器:

1
2
# 以下命令在主機中運行
docker exec -it [name] /bin/bash

若在上述運行容器中去掉 -d,則可以直接進入容器 bash,退出後容器停止,加上 -d 則後台運行,請手動停止。上述進入容器針對加上 -d 的方法運行。

特殊用法:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# 以下命令在容器中運行
# 更新 git 倉庫
wiki-upd

# 使用我們的自定義主題
wiki-theme

# 構建 mkdocs ,會在 site 文件夾下得到靜態頁面
wiki-bld

# 構建 mkdocs 並渲染 MathJax ,會在 site 文件夾下得到靜態頁面
wiki-bld-math

# 運行一個服務器,訪問容器中 http://127.0.0.1:8000 或訪問主機中 http://127.0.0.1:[port] 可以查看效果
wiki-svr

# 修正 Markdown
wiki-o

退出容器:

1
2
3
# 以下命令在容器中運行
# 退出
exit

停止容器

1
2
# 以下命令在主機中運行
docker stop [name]

啓動容器

1
2
# 以下命令在主機中運行
docker start [name]

重啓容器

1
2
# 以下命令在主機中運行
docker restart [name]

刪除容器

1
2
3
# 以下命令在主機中運行
# 刪除前請先停止容器
docker rm [name]

更新鏡像

重新再 pull 一次即可,通常不會更新。

刪除鏡像

1
2
3
# 以下命令在主機中運行
# 刪除前請先刪除使用 oi-wiki 鏡像構建的容器
docker rmi [image]

疑問

如果您有疑問,歡迎提出 issue