MinDoc

Docker安装:

docker run -p 8181:8181 --name mindoc -e DB_ADAPTER=mysql -e MYSQL_PORT_3306_TCP_ADDR=*.*.*.* -e MYSQL_PORT_3306_TCP_PORT=3306 -e MYSQL_INSTANCE_NAME=mindoc -e MYSQL_USERNAME=username -e MYSQL_PASSWORD='password' -e httpport=8181 --privileged=true -v /docker/mindoc:/myMindoc -d daocloud.io/lifei6671/docker-mindoc:latest

MYSQL_PORT_3306_TCP_ADDR:MySql连接地址
MYSQL_PORT_3306_TCP_PORT:MySql端口
MYSQL_INSTANCE_NAME:数据库名称
MYSQL_USERNAME:用户名
MYSQL_PASSWORD:密码

-v /docker/mindoc:/myMindoc # 映射目录
  • 跑了上述代码后建议清理下 history 的命令记录

相关配置

容器启动后,进入容器

docker exec -it mindoc /bin/sh

进入根目录

cd /

删除mindoc空目录

rm -rf /mindoc

创建软连接

ln -s /myMindoc /mindoc

将创建软连接命令写入启动文件

echo "ln -s /myMindoc /mindoc" >> /etc/rc.local

退出容器

C ^ P, Q #按住Ctrl不放,按序按P和Q

重启容器

docker restart mindoc

Note:、

  • 不知道什么原因,无法直接创建容器内的mindoc对外的直接映射,所以在这建立myMindoc中转目录,通过软连接方式和外部目录建立联系,容器外部可用git管理代码。
  • 如果域名配置CDN只是为了隐藏IP,需要将刷新时间设置为0,不然页面会有奇怪的缓存,至少我测试的时候是这样。。。如果不介意某些可能的意外的话,域名解析直接A记录过去吧。。。
  • 这容器还有个小bug,时区显示不太正常,然后导致每篇文章下的更新时间显示不对,从另外的Ubuntu系统里拷贝个/usr/share/zoneinfo/PRC文件到/etc/localtime中即可解决,不知还有没有更简单的方法?

配置简单负载均衡

  • 先创建几个容器,如 mindoc、mindoc2、mindoc3,各映射端口 8181、8182、8183
  • 配置Nginx

    upstream myDoc   
    {
      ip_hash;
      server 127.0.0.1:8181 max_fails=3 fail_timeout=30s weight=100;
      server 127.0.0.1:8182 max_fails=3 fail_timeout=30s weight=100;
      server 127.0.0.1:8183 max_fails=3 fail_timeout=30s weight=100;
    }
    # ip_hash指令,将同一用户引入同一服务器。
    # max_fails = 3 为允许失败的次数,默认值为1
    # fail_timeout = 30s(也可以是fail_timeout = 30,即后面的秒单位不带) 当max_fails次失败后,暂停将请求分发到该后端服务器的时间
    # weight权限设置低,命中率就会低,这样机器压力就会减轻
    
    server {
    
    # 此处省略相关配置
    
      location / {
          proxy_pass  http://myDoc; #这里proxy_test是上面的负载的名称,映射到代理服务器,可以是ip加端口,或url 
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      }
    }
    
  • 重启nginx

参考资料

文档更新时间: 2019-04-09 17:21   作者:Seeker