使用Docker搭建私有云筆記

以前買了主機搭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

圖片描述

須要的工具以下數據庫

  1. git
  2. docker

須要的鏡像,一個是現成的,另外一個是本身構建的bash

  1. mongo
  2. axboy/leanote

安裝mongo並配置

獲取鏡像

$ 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數據庫

由於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參數,爲的是防止舊數據和新數據衝突。

安裝leanote並配置

下載鏡像的Dockerfile文件安裝,做者已經作出了無數據庫版的鏡像

安裝leanote

下載Dockerfile,修改配置並建立一個新的鏡像

$git clone https://github.com/axboy/leanote.git
$cd leanote/no-db
$nano Dockerfile
  1. 從倉庫拉取Dockerfile
  2. 進入leanote/no-db 目錄下
  3. 咱們須要修改寫配置
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,作了如下幾件事

  1. 把以前咱們下載的leanote.tar.gz挪到Dockerfile所在的目錄下,方便咱們使用ADD命令添加並解壓到鏡像中。
  2. 屏蔽軟件安裝,由於咱們手動把軟件下載下來了,不須要wget,docker的ADD命令幫咱們導入壓縮包的時候自動給咱們解壓了,不須要tar。這樣子作還有個好處是,節省了鏡像構建的時間。
  3. 屏蔽wgettar使用的命令,由於咱們沒有安裝,也不須要使用。

修改完畢後,按Ctrl+x保存,按y肯定保存,按回車肯定保存的文件名。

重要:要把以前下載的leanote.tar.gz挪到Dockerfile所在的目錄下,不想挪你從新下載也行,可是壓縮包必須和Dockerfile在一塊兒,很重要

建立一個新的鏡像,名字爲axboy/leanote,tag爲no-db2.6.1

$docker build . -t="axboy/leanote:no-db2.6.1"

運行leanote鏡像

$ 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

上面這段命令咱們作了這些幾件事

  1. docker 運行一個新的容器,之後臺運行容器(-d),命名爲leanote
  2. 把容器中的/data/leanote配置掛在再宿主機的pwd目錄下,方便持久化配置
  3. 端口轉發,把容器的9000端口轉發到宿主機的10001端口
  4. 運行容器的鏡像

(下午的時候,知道一個網友安裝發現權限問題,因此這裏給出一個方案,很簡單粗暴的方案)

$ sudo chown -R root:root yourpath/leanote
$sudo chmod -R 777 yourpath/leanote

如今咱們能夠經過獨立mongo容器管理咱們全部的數據。

配置

安裝完還不能立刻使用,由於咱們尚未把數據庫和leanote進行關聯。這時候咱們須要修改配置。

數據庫的IP

$docker exec mongo cat /etc/hosts

容器IP

從上圖能夠看到ip是127.17.0.2,咱們那麼咱們須要的容器IPdocker宿主機的ip就是127.17.0.1(也就是最後一位爲1便是docker宿主機的ip)。

修改配置

$nano yourpath/leanote/conf/app.conf

修改的地方有

  • db.host
  • db.dbname
  • db.port

改成相應的參數

圖片描述

圖片描述

注意:若是你修改並重啓後依然沒法訪問,須要執行下面的操做

修改配置

改成root

重啓

把admin改成root,保持重啓

再次訪問服務器地址 ip:port ,網頁的控制檯顯示爲下面這樣

錯誤以下

再把配置改回admin,再重啓

修改配置

改成root

重啓

成功

點擊查看更多內容

MongoDBLinuxDocker

做者:布寶 連接:https://www.imooc.com/article/49225?block_id=tuijian_wz 來源:慕課網 本文首次發佈於慕課網 ,轉載請註明出處,謝謝合做

相關文章
相關標籤/搜索