Docker

mongo 备份

mongo backup

qwding

1 minute read

mongo 备份 秉承方便简单,易搭建原则,还是用docker来实现,镜像地址(https://hub.docker.com/r/carlding/mongobackup/) docker hub找到一个镜像,istepanov/mongodump可以实现本地monogo的备份,查阅其内部脚本,并没有开放传入远程数据库的接口,于是在此基础上改进 Dockerfile FROM istepanov/mongodump ​MAINTAINER qwding ADD backup.sh backup.sh ADD start.sh start.sh backup.sh #!/bin/bash set -e echo "Job started: $(date)" DATE=$(date +%Y%m%d_%H%M%S) FILE="/backup/backup-$DATE.tar.gz" echo "mongodump -h $MONGO_PORT_27017_TCP_ADDR -p $MONGO_PORT_27017_TCP_PORT -u $MONGO_USER -p $MONGO_PASSWORD -d $MONGO_DB" mongodump -h $MONGO_PORT_27017_TCP_ADDR -u $MONGO_USER -p $MONGO_PASSWORD -d $MONGO_DB tar -zcvf $FILE dump/ rm -rf dump/ echo "Job finished: $(date)" start.sh #!/bin/bash set -e CRON_SCHEDULE=${CRON_SCHEDULE:-0 1 * * *} if [[ "$1" == ‘no-cron’ ]]; then exec /backup.

beego 如何不同环境用不同的runmode

Use different runmode of beego.

qwding

1 minute read

beego runmode修改 除了配置文件设置runmode,想切换环境时候需要手动改,太麻烦,而且容易忘 想通过如下两种方法尝试,均无效: flag,但是beego本身并没有flag,简直行不通 官方文档里个的方法是 beego.Runmode = “dev”, 但其实这个方法很鸡肋,很蛋疼,因为读配置文件早在程序运行前执行了,而如果再程序里修改runmode,你在init里用的参数必然还是默认写的,用着基本蛋疼。 我在我本地beego 1.7的环境里又尝试了一下,发现已经没有这个方法了,可能作者也觉得确实蛋疼给删了吧。 环境变量改变 尝试将配置文件的runmode指定为环境变量,然后指定具体模式。发现居然成功了。不管怎么样,确实这个办法还是一个不错的解决方案了 加上docker更好用 因为本来用docker,这样直接在Dockerfile里设置ENV,部署线上的时候,直接用构建好的镜像启动就ok了,什么都不用改了。 懒人使人进步

shell execute mongo/mysql which start by docker.

在实例方法内修改实例地址

1 minute read

#问题初衷 打算一键部署带权限验证的mongo。但是docker hub官方镜像创建mongo步骤为: docker run –name mongodb -d -p 27017:27017 mongo:3.3 –auth docker exec -it mongodb mongo admin db.createUser({ user: ‘root’, pwd: ‘root’, roles: [ { role: "root", db: "admin" } ] }); 打算将其做成脚本 #用shell实现 经过查阅,发现shell的 <<EOF 可以实现,查阅资料 http://my.oschina.net/u/1032146/blog/146941 应该可以实现,于是写了脚本 #!/bin/bash mongo admin << EOF db.createUser({ user: ‘root’, pwd: ‘root’, roles: [ { role: "root", db: "admin" } ] }); exit; EOF 在mongo 启动的容器内执行脚本,成功! #直接写脚本启动容器(error) !/bin/bash docker run –name mongodb -d -p 27017:27017 dhub.