DB をホストするわけじゃないので PostgreSQL をインストールしたくないパーソンです。
すぐ忘れるのでメモ。
使い捨て
# docker image を pull
$ docker pull postgres
# コンテナ起動して bash へ(--rm で終了即コンテナ削除)
$ docker run --rm -it postgres /bin/bash
# psql を使うよ
root@xxxx:/# psql -h <host> -d <database> -U <user>
# いきなり psql で良かったわ
$ docker run --rm -it postgres psql -h <host> -d <database> -U <user>
コンテナ使いまわし(bash のコマンド履歴使いたい場合)
# docker image を pull
$ docker pull postgres
# コンテナ起動して bash へ(--name でコンテナに名前付けて消さない)
$ docker run --name psql -it postgres /bin/bash
# psql を使うよ
root@xxxx:/# psql -h <host> -d <database> -U <user>
# 抜け
root@xxxx:/# exit
# もう一度コンテナへ
$ docker start -ai psql
# 履歴使える
root@xxxx:/# psql -h <host> -d <database> -U <user>
コンテナを消すのは docker rm psql
。
応用: pg_dump を使う
docker run --rm -it postgres pg_dump -h <host> -U <user> <datbase> > hostdir/backup.sql
(今まで、-v してコンテナ内部から pg_dump してたのがムダだと気づくのに、結構な日数を使ってしまったよ…。)
(あれ、でもなんかダンプした backup.sql の日本語が文字化けしてるな。。。)
restore も一発でやろうとしたんだけど…
cmd /c 'docker run --rm -it postgres psql -h host db < ./bk/bk.sql'
— WFHあめいにおまかせろ! (@amay077) July 9, 2020
でイケた(ダサ…
→winpty を付けろとか怒られる
→cmd /c 'winpty docker run --rm -it postgres psql -h host db < ./bk/bk.sql'
→stdin is not a tty と怒られるヽ(`Д´#)ノ