先進入資料庫複製 userlist.txt t出來
SQL:
Copy (SELECT '"'||usename||'"'||' "'||passwd||'"' FROM pg_shadow ) To '/tmp/userlist.txt' ;
將 /tmp/userlist.txt複製出來到docker運行主機上
回到docker主機管理帳號
mkdir pgbouncer
cd pgbouncer
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
Content type
Image
Digest
Size
7.8 MB
Last updated
almost 6 years ago
docker pull dennisxkimo/pgbouncer