以前买了主机搭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 来源:慕课网 本文首次发布于慕课网 ,转载请注明出处,谢谢合做