1
1

More than 3 years have passed since last update.

過去バージョンのPostgreSQLを使うためにDockerを活用する

Last updated at Posted at 2021-01-30

PostgreSQLのサーバ側と、手元のクライアント側でバージョンの不整合があり
dumpしたデータの取り込みに問題が生じたために、サーバ・クライントでバージョンを合わせたいと考えた。

Macを使っている場合はbrewで過去バージョンを入れることも検討されるが
brewの過去をチェックアウトするような方法1が必要なようで面倒に感じた。

今回は、Dockerを使用して環境構築を行うことにした。

FROM ubuntu:20.04
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update
RUN apt-get install wget ca-certificates gnupg2 -y
RUN sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt focal-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
RUN cat /etc/apt/sources.list.d/pgdg.list
RUN wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
RUN apt-get update
RUN apt install postgresql-client-11 -y
RUN pg_basebackup -V

ENV DEBIAN_FRONTEND noninteractive はtzdataインストールで止まるときの対策2です。

他の大部分の記述は apt-get にない postgresql-client-11 を使えるようにしています。
https://wiki.postgresql.org/wiki/Apt にコードの記載があります。

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

という記載がありますが lsb_release が動かないこともあり
20.04では実際に上手くこのままでは動作しませんでした。

Ubuntu 16.04 (xenial), 18.04 (bionic), 20.04 (focal), 20.10 (groovy, amd64 only)

20.04は先程のURLは記載の通り、focalであることが分かっていますので

RUN sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt focal-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

と書き換えました。
またsudoがRUNでは動かないようでしたのでsudoを消して記述を行いました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1