docker-compose 部署 nginx mongo leanote

女生的网名这么多〃 提交于 2019-12-04 09:58:01

0. 说明

基于阿里云的 Centos7.4 测试。

1. 快速搭建

# 安装 docker 和 docer-composer,如果已安装则直接跳过
yum install -y docker # 安装 docker,默认版本1.13.0
pip install docker-compose # 使用 pip 安装运行 docker-composer
systemctl start docker # 运行 docker
docker-compose --version # 检查版本
# 安装 docker 和 docer-composer,如果已安装则直接跳过

git clone https://github.com/LiWenGu/leanote_docker_composer.git
docker-composer up -d
bash restore_leanote_db.sh

# 测试
curl localhost/hello.html # nginx 文件映射测试
curl www.leanote.com      # leanote测试,前提设置了 /etc/hosts:127.0.0.1 www.leanote.com

2. 目录设定

  1. /liwenguang/docker_compose_dir/leanote/data_upload 用于存储笔记的上传文件,方便以后迁移
  2. /liwenguang/docker_compose_dir/leanote/mongodb_backup 用于存储 leanote 的数据备份文件,用于 leanote 的初始化,一次使用便可删除。
  3. /liwenguang/docker_compose_dir/mongo/data 用于存储 mongodb 的数据文件,方便以后迁移
  4. /liwenguang/docker_compose_dir/nginx/nginx.conf 用于存储 nginx 的主配置文件。
  5. /liwenguang/docker_compose_dir/nginx/conf 用于存储 nginx 的服务器配置文件。
  6. /liwenguang/docker_compose_dir/nginx/nginx.pid 用于存储当前 nginx 的 pid ,用于集群。
  7. /liwenguang/docker_compose_dir/nginx/www 用于存储静态内容(测试nginx)。
  8. /liwenguang/docker_compose_dir/nginx/logs 用于存储 nginx 的日志。
  9. /liwenguang/docker_compose_dir/docker-composer.yml compose 的主模板文件。

注意:mongodb_backup 文件夹内容在官方的安装包内,因此可以对照得出 shell 脚本获取:

#! bin/sh
LEANOTE_VERSION=2.6.1
wget https://razaoinfo.dl.sourceforge.net/project/leanote-bin/${LEANOTE_VERSION}/leanote-linux-amd64-v${LEANOTE_VERSION}.bin.tar.gz
tar zxf leanote-linux-amd64-v${LEANOTE_VERSION}.bin.tar.gz
mkdir leanote
mv leanote/mongodb_backup /liwenguang/docker_compose_dir/leanote/mongodb_backup
rm -rf leanote && rm leanote-linux-amd64-v${LEANOTE_VERSION}.bin.tar.gz

3. docker-composer.yml

以下为 docker-composer.yml 的内容,主要在于账号密码的设置以及端口的映射还有目录的挂载。

version: '3'

services:
  mongo:
    image: mongo:4
    container_name: mongo_compose
    restart: always
    ports:
      - 27017:27017
    # 对应目录 leanote 备份路径
    volumes:
      - ./leanote/mongodb_backup:/leanote/mongodb_backup
  leanote:
    image: liwenguang/leanote:2.6.1
    container_name: leanote_app_compose
    restart: always
    # 发布端口,但是不映射到主机
    ports:
      - 9000
    volumes:
      - ./leanote/data_upload:/usr/local/leanote/public/upload
    links:
      - mongo
    # 配置信息
    environment:
      - SITE_URL=www.liwenguang.com
      # 使用登录账号密码需要在 mongo 中的 leanote 创建
      # - DB_USERNAME=root
      # - DB_PASSWORD=mongopwd
  nginx:
    image: nginx:1.14.0-alpine
    container_name: nginx_compose
    restart: always
    # 发布并映射到主机端口
    ports:
      - 80:80
      - 443:443
      - 5050:5050
      - 4040:4040
    # 通信
    links:
      - leanote
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./nginx/conf:/etc/nginx/conf.d
      - ./nginx/nginx.pid:/etc/nginx/nginx.pid
      - ./nginx/www:/etc/nginx/www
      - ./nginx/logs:/etc/nginx/logs

4. 执行 leanote mongodb 数据备份:

参考 leanote 官方备份指导,写出的脚本直接运行即可:
在 mongodb 容器内执行数据恢复(数据备份文件已经通过挂载映射到了 mongodb 容器内了)

docker exec mongo_compose mongorestore --host localhost --port 27017 -u root -p mongopwd --authenticationDatabase admin -d leanote --dir /leanote/mongodb_backup/leanote_install_data

5 nginx 配置

比较简单,nginx 配置两个服务器,一个文件映射,用于测试;一个域名映射,映射到 leanote 容器的 localhost:9000 。同时修改本地 hosts 文件,设置本地 DNS解析:

vim /etc/hosts
127.0.0.1 www.leanote.com

具体配置:

6. 常用命令

  1. docker images; 显示当前的镜像列表
  2. docker rmi imagesId: 删除某个镜像
  3. docker rm containerId:删除某个容器
  4. docker exec -it containerId sh:进入容器内
  5. docker cp containerId:/etc/file /etc/file:复制容器文件到主机
  6. docker exec containerId shell:在容器内执行shell命令
  7. docker-compose up -d [imagesName]:创建构建部署配置文件中特定的镜像
  8. docker-compose build [imagesName]:重新构建某个镜像
  9. docker-compose down:停止当前目录下该配置文件中的容器
  10. docker search imageName:查找中央仓库中的相关镜像信息

7. 参考

  1. https://hub.docker.com/r/zuolan/leanote/
  2. https://hub.docker.com/r/oakman/docker-leanote/~/dockerfile/

8. 由于笔者能力有限,有错误在所难免,给我提 issue,我会及时改正的。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!