Sign inSign up

dennisxkimo/pgbouncer

By dennisxkimo

•Updated almost 6 years ago

Image
0

200

dennisxkimo/pgbouncer repository overview

⁠產生userlist.txt

先進入資料庫複製 userlist.txt t出來

SQL:
Copy (SELECT '"'||usename||'"'||' "'||passwd||'"' FROM pg_shadow ) To '/tmp/userlist.txt' ;

將 /tmp/userlist.txt複製出來到docker運行主機上


回到docker主機管理帳號

⁠建立維護目錄

mkdir pgbouncer

⁠切換到維護目錄

cd pgbouncer

⁠建立臨時container,複製參考範例與基礎設定檔

docker run -d --name pgb dennisxkimo/pgbouncer
docker cp pgb:/etc/pgbouncer/pgbouncer.ini.example ./
docker cp pgb:/etc/pgbouncer/pgbouncer.ini ./
drocker stop pgb
docker rm pgb

將剛剛產生的userlist.txt 複製到此目錄
只保留需要的db user

參考pgbouncer.ini.example 內容修改 pgbouncer.ini 成為環境需要的設定值
如果userlist.txt內容是md5 請自行改 auth_type = md5

⁠範例:

因為pg資料庫是與docker同一台
因此資料庫連線連本機的 127.0.0.1:5432/mypgdb port不能衝突所以設listen_port = 6432
如果不同機器可以設listen_port = 5432

如果同機器,應用端需要5432 那需要改變資料庫的port,
並且將[databases]內的資料庫連線設定指定該port,
這樣就能使用listen_port = 5432

[databases]
mypgdb = host=127.0.0.1 port=5432 dbname=mypgdb listen_port = 6432

執行掛載本目錄的 pgbouncer.ini 與 userlist.txt 使用

因為是同一台 [databases] 連線設定127.0.0.1 請增加docker 參數 --network host
docker run -d --name pgb \
-v $(pwd)/pgbouncer.ini:/etc/pgbouncer/pgbouncer.ini \
-v $(pwd)/userlist.txt:/etc/pgbouncer/userlist.txt \
--network host \
-p 6432:6432 \
dennisxkimo/pgbouncer

但不管是不是同一台如果[databases] 內的設定是IP 就不需要 --network host
docker run -d --name pgb \
-v $(pwd)/pgbouncer.ini:/etc/pgbouncer/pgbouncer.ini \
-v $(pwd)/userlist.txt:/etc/pgbouncer/userlist.txt \
-p 6432:6432 \
dennisxkimo/pgbouncer

Tag summary

Content type

Image

Digest

Size

7.8 MB

Last updated

almost 6 years ago

docker pull dennisxkimo/pgbouncer