fig,無花果。[fig項目](http://blog.csdn.net/lincyang/article/details/www.fig.sh)源自docker,可以認為是快速搭建基于Docker的隔離開發環境的工具。
#### 一、安裝fig
~~~
$?mkdir?docker;?cd?docker??
??
$?curl?-L?https://github.com/docker/fig/releases/download/1.0.1/fig-`uname?-s`-`uname?-m`?>?fig??
??
$?sudo?chmod?+x?fig;?sudo?mv?fig?/usr/local/bin/??
~~~
#### 二、搭建mediawiki
使用個人構建的鏡像,github地址:[https://github.com/bopjiang/wikimedia-docker](https://github.com/bopjiang/wikimedia-docker)
在docker目錄下執行如下命令:
~~~
$?git?clone?https://github.com/bopjiang/wikimedia-docker.git??
$?cd?wikimedia-docker??
$?fig?up?-d??
~~~
此時有兩個容器啟動:
~~~
r$?docker?ps??
CONTAINER?ID????????IMAGE???????????????????????????COMMAND????????????????CREATED?????????????STATUS??????????????PORTS??????????????????NAMES??
21182a060c17????????nickstenning/mediawiki:latest???"/usr/bin/mediawiki-???7?hours?ago?????????Up?7?hours??????????0.0.0.0:8880->80/tcp???wikimediadocker_wiki2_1?????
728ec09c3552????????mysql:5.7.5?????????????????????"/entrypoint.sh?mysq???7?hours?ago?????????Up?7?hours??????????3306/tcp???????????????wikimediadocker_db_1??????
~~~
#### 三、fig.yml
fig.yml用來配置鏡像構建的具體內容,此wiki的fig.yml在wikimedia-docker目錄下,內容如下:
~~~
wiki2:??
????image:?'nickstenning/mediawiki'??
????ports:??
????????-?"8880:80"??
????links:??
????????-?db:database??
????volumes:??
????????-?/data/wiki2:/data??
??
db:??
????image:?"mysql:5.7.5"??
????expose:??
????????-?"3306"??
????environment:??
????????-?MYSQL_ROOT_PASSWORD=defaultpass??
~~~
image:用來指定鏡像,如果本地沒有,fig將會嘗試去遠程pull這個鏡像。
ports:暴露的端口.
links:在其他服務中連接容器。
volumes: 卷掛載路徑,容器中的/data/目錄掛載到主機的/data/wiki2下。在wiki配置完畢后,將LocalSettings.php文件放置在主機的/data/wiki2目錄下。
expose:也是暴露端口,與ports的區別是不發布到宿主機的端口,只被連接的服務訪問。
environment:設置環境變量。
#### 四、wiki的配置
瀏覽器中輸入localhost:8880,首次啟動會讓進入配置界面。完成后生成LocalSettings.php文件。也可以直接在這個配置文件中作配置。
生成的LocalSettings.php文件要拷到/data/wiki2目錄下(配置文件中定義的卷掛載路徑),并增加其r屬性就可以了。
還記得在yml配置文件中數據庫主機名是什么吧?database,對了,那么在配置中也要這樣填寫,如圖:

#### 五、wiki的使用技巧
1.左側導航欄的配置
以管理員身份登錄,在搜索欄中輸入MediaWiki:sidebar
進入配置界面后就可以編輯了。比如:
navigation
??? http://192.168.0.111:8880/index.php?title=Category:XXX|XXX
??? mainpage|mainpage-description
??? portal-url|portal?
3.分類
文章的末尾加入"category"標簽即可將此文章放到了xxx分類中,一篇文章可以加入多個分類。
比如:[[category:XXX]]
4.新文章
在Search中輸入你的文章名稱即可Edit。
5.換行
用br標簽可以換行。
空一行也會有換行效果。
6.pre標簽包圍源代碼
例如:
private int mSize;
#### 六、保存容器和導入
~~~
sudo?docker?commit?9ab6e234c9ba?linc-wiki??
??
sudo?docker?images?REPOSITORY???????????????TAG?????????????????IMAGE?ID????????????CREATED?????????????VIRTUAL?SIZE?linc-wiki????????????????latest??????????????b5a1e34b01c2????????14?seconds?ago??????689.7?MB??
??
sudo?docker?export?9ab6e234c9ba?>?/home/linc/docker/images-bk/linc-wiki-export.tar??
sudo?docker?save?linc-wiki?>?../images-bk/linc-wiki-save.tar??
??
$?du?-sh?*??
495M????linc-wiki-export.tar??
672M????linc-wiki-save.tar??
??
sudo?cat?/home/linc/docker/images-bk/linc-wiki-export.tar?|?sudo?docker?import?-?docker_hgweb??
sudo?docker?load?--input?../images-bk/linc-wiki-save.tar??
~~~
**附錄:**
1.fig使用報錯及解決
fig running error:
~~~
$?fig?up??
Couldn't?connect?to?Docker?daemon?at?http:/?-?is?it?running???
??
If?it's?at?a?non-standard?location,?specify?the?URL?with?the?DOCKER_HOST?environment?variable.??
~~~
fix it:
~~~
1)?Change?the?DOCKER_OPTS?in?/etc/default/docker?to:??
DOCKER_OPTS="-H?tcp://127.0.0.1:4243?-H?unix:///var/run/docker.sock"??
??
2)?Restart?docker??
sudo?restart?docker??
??
3)?Make?sure?that?docker?is?running?on?localhost:4243???
$?netstat?-ant??|grep?4243??
tcp????????0??????0?127.0.0.1:4243??????????0.0.0.0:*???????????????LISTEN??
??
4)?Set?DOCKER_HOST?(.bashrc)??
export?DOCKER_HOST=tcp://localhost:4243??
??
$?echo?$DOCKER_HOST??
tcp://localhost:4243???
~~~
參考:
dockerpool.com/static/books/docker_practice/fig/yml_ref.html