安裝外部數據庫postgresql
我是采用的寶塔的postgresql管理器進行安裝的,選擇的是11.0版
安裝好之后,分別添加數據庫kong和數據庫konga穿香,設立用戶名和密碼
先設定數據庫訪問權限為“所有人”扔水,這個在后面會說到
docker安裝KONG
docker pull kong:2.1-ubuntu
先獲取鏡像朝氓,目前最新的鏡像是kong2.1
獲取完鏡像后,先建立docker專用網絡
docker network kong-net
初始化kong數據庫
docker run --rm \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=172.17.0.1" \
-e "KONG_PG_PORT=5432" \
-e "KONG_PG_USER=kong" \
-e "KONG_PG_DATABASE=kong" \
-e "KONG_PG_PASSWORD={數據庫密碼}" \
-e "KONG_CASSANDRA_CONTACT_POINTS=kong" \
kong:2.1-ubuntu kong migrations bootstrap
kong官方文檔里待德,都是采用的docker安裝postgresql枫夺,然后通過kong-net自動發(fā)現,我嘗試了较坛,很多情況下扒最,都會連接數據庫失敗。最根本的原因還是在初始化的時候法竞,官方給的參數說明實際上并不完整和準確强挫。
KONG_PG_HOST:代表數據庫地址,這個不能使用官方文檔范例里一樣的容器名呆细,要用IP稠诲。在使用外部數據庫的時候,先用ifconfig命令,查看源主機對應docker的IP地址价卤,如果源主機安裝了docker后,使用ifconfig命令床嫌,會看到docker0的段落內容,里面就有ip_address鳖谈。
KONG_PG_PORT:數據庫端口號阔涉,官方以及網絡上很多文檔,都沒有寫這個參數贯要,很多時候都會因為缺少這個參數導致連接不上數據庫
KONG_CASSANDRA_CONTACT_POINTS:這個后面的值是數據庫名椭住,不像官方說明一樣是容器名
執(zhí)行完后,就可以正式創(chuàng)建kong的容器
docker run -d --name kong \
--network=kong-net \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=172.17.0.1" \
-e "KONG_PG_PORT=5432" \
-e "KONG_PG_USER=kong" \
-e "KONG_PG_DATABASE=kong" \
-e "KONG_PG_PASSWORD={數據庫密碼}" \
-e "KONG_CASSANDRA_CONTACT_POINTS=kong" \
-e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
-e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
-e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
-e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
-e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \
-p 8000:8000 \
-p 8443:8443 \
-p 8001:8001 \
-p 8444:8444 \
kong:2.1-ubuntu
在官方說明里宅广,這一段同樣缺少了部分參數跟狱,查了很多資料才填上這個坑金拒。
至此,KONG的容器就創(chuàng)建好了绪抛。
使用命令 curl -i http://localhost:8001 試試看有沒有內容輸出幢码,如果有很多Json內容輸出就代表成功了。
docker安裝KONGA
kong的社區(qū)版沒有UI界面管理症副,都是命令行式的贞铣,不太方便,所以選用KONGA來進行Kong的管理辕坝。目前網絡上用的比較多的是kong-dashboard,但是這個已經不支持最新版的kong琳袄,所以選用了新秀konga。
獲取鏡像
docker pull pantsel/konga:0.14.9
目前konga的最新版本為0.14.9
初始化數據庫
docker run --rm --network=kong-net pantsel/konga:0.14.9 -c prepare -a postgres -u postgresql://{數據庫密碼}@172.17.0.1:5432/konga
這里的IP地址同上安裝kong時的址否。
執(zhí)行完后碎紊,創(chuàng)建konga容器
docker run --name konga \
--network=kong-net \
-e "DB_ADAPTER=postgres" \
-e "DB_HOST=172.17.0.1" \
-e "DB_PORT=5432" \
-e "DB_USER=konga" \
-e "DB_PASSWORD={數據庫密碼}" \
-e "DB_DATABASE=konga" \
-e "KONG_HOOK_TIMEOUT=120000" \
-e "NODE_ENV=production" \
-p 1337:1337 \
pantsel/konga:0.14.9
至此konga就安裝好了矮慕。可以使用http://localhost:1337訪問瘟斜。konga里可以設置訪問域名痪寻,替代這種帶端口號的。我為了簡單橡类,使用了反向代理,達到一樣的效果取劫。
最后谱邪,因為之前設定的數據庫的訪問權限是所有人庶诡,為了安全,我們必須得更改一下這個權限扯俱。要變更權限喇澡,需要先知道容器的地址是什么,我們可以用如下命令來查看:
docker inspect kong
這個命令可以查看kong這個容器的所有相關信息库继。我們找到Netsworks段窜醉,里面有個之前設定的kong-net,在期間我們可以找到容器的IP地址榨惰。
其間的IPAddress就是容器地址拜英。因為我們容器都使用了kong-net,所以所有容器都在一個網段琅催,那么我們就可以設定數據庫只開放給這一個網段