2022年3月14日月曜日

Dockerでpg_dumpをインストールしたイメージ(Alpine3.15ベース)を作成してバックアップを行う

Dockerでpg_dumpをインストールしたイメージ(Alpine3.15ベース)を作成してバックアップを行うには、以下の手順を実行します。バックアップの取得と同時に圧縮も行います。

実行手順

1. 以下のDockerfileを使用してPostgreSQLのpg_dumpをインストールしたイメージを作成します。
Dockerfile
FROM alpine:3.15
RUN apk --no-cache add postgresql-client \
  && mkdir /data
WORKDIR /data
VOLUME ["/data"]
ENV PG_HOST=localhost \
  PG_USER=postgres \
  PGPASSWORD=postgres \
  PG_DB=postgres \
  PG_PORT=5432 \
  BASENAME=backup \
  POSTFIX=_
CMD ["/bin/sh", "-c", "/usr/bin/pg_dump -h ${PG_HOST} -p ${PG_PORT} -U ${PG_USER} ${PG_DB}  | gzip > /data/${BASENAME}${POSTFIX}.dmp.gz"]

・イメージビルド用コマンド
docker build --no-cache -t mypgdump .

2. 以下のコマンドでコンテナ内のpg_dumpコマンドを実行します。
適宜、環境変数を変更してください。
docker run --rm -it -e PGPASSWORD=mypostgres -e PG_HOST=myhost -e PG_PORT=5432 -e PG_USER=postgres -e PG_DB=mydb -e BASENAME=backup -e POSTFIX=`/bin/date '+%Y%m%d-%H%M'` -v `pwd`:/data mypgdump

関連情報

・KubernetesでCronJobとして動作させる場合は、以下のページを参照してください。
Microk8sでCronJobを使用してPostgreSQLのバックアップを行う

0 件のコメント:

コメントを投稿