參考 https://github.com/Ryan-Miao/docker-yapi , 並使用該代碼的腳本構建yapi image。
部署mongodb
docker run \
--name mongod \
-p 27017:27017 \
-v /data/opt/mongodb/data/configdb:/data/configdb/ \
-v /data/opt/mongodb/data/db/:/data/db/ \
--net tools-net --ip 172.18.0.2 \
-d mongo:4.0 --auth
mongodb如果中途切換版本的話可能會因為不兼容無法讀寫數據,主要看一下啟動日志
初始化數據庫
docker exec -it mongod mongo admin
>db.createUser({ user: 'admin', pwd: 'admin123456', roles: [ { role: "root", db: "admin" } ] });
驗證授權
>db.auth("admin", "admin123456")
返回1表示授權成功,0表示失敗
創建yapi數據庫用戶
db.createUser({
user: 'yapi',
pwd: 'yapi123456',
roles: [
{ role: "dbAdmin", db: "yapi" },
{ role: "readWrite", db: "yapi" }
]
});
部署yapi
構建yapi docker image
https://blog.csdn.net/weixin_33757609/article/details/91414542
##這里選的版本號是1.9.2
sh build.sh 1.9.2
注意config.json的數據庫連接配置跟上面的用戶名密碼一致,ldap登錄也在這里加,參考官方文檔 https://hellosean1025.github.io/yapi/devops/index.html
{
"port": "3001",
"adminAccount": "admin@admin.com", // 這里必須是個帶@的郵箱方式,否則不能啟動
"db": {
"servername": "172.18.0.2",
"DATABASE": "yapi",
"port": "27017",
"user": "yapi",
"pass": "yapi123456",
"authSource":"admin"
},
"mail": {
"enable": false,
"host": "smtp.163.com",
"port": 465,
"from": "***@163.com",
"auth": {
"user": "***@163.com",
"pass": "*****"
}
},
"ldapLogin": {
"enable": true,
"server": "ldap://l-ldapt1.com",
"baseDn": "CN=Admin,CN=Users,DC=test,DC=com",
"bindPassword": "password123", // 可不填
"searchDn": "OU=UserContainer,DC=test,DC=com",
"searchStandard": "&(objectClass=person)(uid=%s)" // 使用uid搜索
},
"closeRegister": true // 關閉注冊
}
初始化並啟動
docker run -d -p 3001:3001 --name yapi yapi --initdb
或者直接啟動
docker run -d -p 3001:3001 --name yapi yapi
啟動成功后訪問 http://127.0.0.1:3001/
接入ldap登錄
修改yapi 的 config.json文件
"ldapLogin": {
"enable": true,
"server": "ldap://abc.xxx.com",
"baseDn": "ou=people,dc=xx,dc=xxx,dc=com",
"bindPassword": "",
"searchDn": "",
"searchStandard": ""
},
"closeRegister": true
順便搭一個adminMongo用來管理mongodb
docker run \
--name mongod \
-p 1234:1234 \
-v /config/app.json:/app/user/config/app.json
--net tools-net --ip 172.18.0.2 \
-d mrvautin/adminmongo
注意 app.json的配置,否則可能無法啟動
{
"app": {
"host": "0.0.0.0", //IP(注意這里的配置是0.0.0.0,不是服務器IP,在linux不添加此配置,項目無法啟動)
"port": 1234, //端口
"username": "admin", //用戶名,可不填
"password": "admin123456", //密碼,可不填
"locale": "en", //語言,中文zh-cn,可不填
"context": "dbApp", //路由配置:例如:http://0.0.0.0:1234/dbApp,可不填
"monitoring": true //是否定期運行監視,可不填
}
}