以前買了主機搭Nas服務器後,尋思着把一些服務也掛在服務器上。由於我並無使用黑羣輝,而是使用ArchLinux作服務器系統,因此什麼都得本身來。linux
既然能本身部署一個私有云,數據仍是存在本身硬盤比較好,第一個開刀的雲筆記。不過開源的雲筆記貌似只找到螞蟻筆記(leanote),不過這開源都不走心,將就用吧。git
找了些資料,感受使用docker安裝比較省力,因而就現學現用,並和鏡像做者協商,作了一個leanote和數據庫分離的的鏡像。這樣能多個容器共用相同的數據庫,管理、持久化和遷移起來都方便。github
修改時間:2018年8月2日10:57:14mongodb
若是你不想瞎折騰,能夠用做者2018年8月1日更新的獨立數據庫版,具體怎麼用我還沒測試。docker
docker run -d --name test_lea \ -p 10086:9000 \ -v `pwd`/conf/:/data/leanote/conf \ axboy/leanote:2.6.1-nodb
須要的工具以下數據庫
須要的鏡像,一個是現成的,另外一個是本身構建的bash
$ docker pull mongo
我本身習慣把docker的容器數據掛載到對應的/home/bubao/disk/data1/opt/容器名
目錄下。服務器
$ mkdir /home/bubao/disk/data1/opt/mongo $ cd /home/bubao/disk/data1/opt/mongo $ docker run -p 27017:27017 --restart=always --name mongo -v `pwd`:/data/db -d mongo
-p 27017:27017
數據庫使用默認的端口映射出來。容器命名爲mongo。之後的全部數據庫都用docker部署,並使用默認端口,宿主機上就不須要起數據庫服務了。app
--restart=always
老是重啓,這樣子重啓宿主機後,自動啓動這個容器。工具
--name mongo
起個名字,由於之後是多個服務器公共一個docker 容器數據庫,就不分是什麼有用的數據庫容器了。
-v `pwd`:/data/db
這個是掛載容器內部的數據到宿主機的當前目錄,這個很重要,由於但你重裝系統後,只要不刪除掉這個文件夾,數據仍是能找到。
由於leanote須要一個初始化的mongo數據才能運行,當咱們要分離出獨立的數據庫時,就須要將初始化數據先導入到獨立的數據庫容器中
下載leanote包,解壓
$wget https://static.axboy.cn/leanote/leanote-linux-amd64-v2.6.1.bin.tar.gz -O leanote.tar.gz $tar -xzf leanote.tar.gz -C .
將解壓出來的數據拷貝到mongo數據庫的容器的根目錄,容器名爲mongo
$docker cp leanote/mongodb_backup/leanote_install_data mongo:/
進入mongo數據庫容器,把數據導入到數據庫中
$docker exec -it mongo bash #mongorestore -h localhost -d leanote --drop --dir /leanote_install_data/ #exit
值得注意的是,這裏加了個--drop
參數,爲的是防止舊數據和新數據衝突。
下載鏡像的Dockerfile文件安裝,做者已經作出了無數據庫版的鏡像。
下載Dockerfile,修改配置並建立一個新的鏡像
$git clone https://github.com/axboy/leanote.git $cd leanote/no-db $nano Dockerfile
FROM debian:jessie-slim MAINTAINER zcw ENV TZ=Asia/Shanghai ADD run.sh /root/ ADD leanote.tar.gz /root/ RUN set -ex; \ # apt-get update; \ # apt-get install -y --no-install-recommends wget tar; \ rm -rf /var/lib/apt/lists/*; \ # wget http://static.axboy.cn/leanote/leanote-linux-amd64-v2.6.1.bin.tar.gz -O /root/leanote.tar.gz; \ # tar -xzf /root/leanote.tar.gz -C /root/ ;\ chmod a+x /root/run.sh ;\ chmod a+x /root/leanote/bin/run.sh ;\ ln -snf /usr/share/zoneinfo/$TZ /etc/localtime ;\ echo $TZ > /etc/timezone EXPOSE 9000 CMD /bin/bash /root/run.sh
你沒有看錯,我在改做者的Dockerfile,作了如下幾件事
leanote.tar.gz
挪到Dockerfile所在的目錄下,方便咱們使用ADD
命令添加並解壓到鏡像中。wget
,docker的ADD
命令幫咱們導入壓縮包的時候自動給咱們解壓了,不須要tar
。這樣子作還有個好處是,節省了鏡像構建的時間。wget
和tar
使用的命令,由於咱們沒有安裝,也不須要使用。修改完畢後,按Ctrl+x
保存,按y
肯定保存,按回車肯定保存的文件名。
重要:要把以前下載的leanote.tar.gz
挪到Dockerfile所在的目錄下,不想挪你從新下載也行,可是壓縮包必須和Dockerfile在一塊兒,很重要。
建立一個新的鏡像,名字爲axboy/leanote
,tag爲no-db2.6.1
$docker build . -t="axboy/leanote:no-db2.6.1"
$ mkdir /home/bubao/disk/data1/opt/leanote $ cd /home/bubao/disk/data1/opt/leanote docker run -d --name leanote \ --restart=always \ -v `pwd`/db:/data/db \ -v `pwd`:/data/leanote \ -p 10001:9000 \ axboy/leanote:no-db2.6.1
上面這段命令咱們作了這些幾件事
-d
),命名爲leanote/data/leanote
配置掛在再宿主機的pwd
目錄下,方便持久化配置(下午的時候,知道一個網友安裝發現權限問題,因此這裏給出一個方案,很簡單粗暴的方案)
$ sudo chown -R root:root yourpath/leanote $sudo chmod -R 777 yourpath/leanote
如今咱們能夠經過獨立mongo容器管理咱們全部的數據。
安裝完還不能立刻使用,由於咱們尚未把數據庫和leanote進行關聯。這時候咱們須要修改配置。
$docker exec mongo cat /etc/hosts
從上圖能夠看到ip是127.17.0.2,咱們那麼咱們須要的容器IPdocker宿主機的ip就是127.17.0.1(也就是最後一位爲1便是docker宿主機的ip)。
$nano yourpath/leanote/conf/app.conf
修改的地方有
改成相應的參數
注意:若是你修改並重啓後依然沒法訪問,須要執行下面的操做
把admin改成root,保持重啓
再次訪問服務器地址 ip:port ,網頁的控制檯顯示爲下面這樣
再把配置改回admin,再重啓
點擊查看更多內容
做者:布寶 連接:https://www.imooc.com/article/49225?block_id=tuijian_wz 來源:慕課網 本文首次發佈於慕課網 ,轉載請註明出處,謝謝合做