Python

DockerでPostgreSQLの実行環境(コンテナ)を作成する方法

Docker PostgreSQL

こんにちは、はやたす(@hayatasuuu )です。

この記事ではDockerでPostgreSQLの実行環境を作成する方法を紹介します。

DockerでPostgreSQLの環境を準備できると、自分のPCを汚さずにSQLを練習できます。

使わなくなったらコンテナを削除するだけ。
PostgreSQLのアンインストールすら考える必要ないです。

さっそくDockerコンテナを使って、
PostgreSQLの実行環境を作成していきましょう。

DockerでPostgreSQLの実行環境(コンテナ)を作成する方法

DockerでPostgreSQLの実行環境を準備するには、以下の3ステップが必要になります。

  • STEP1 : Dockerfileを準備する
  • STEP2 : docker-compose.ymlを作成してコンテナをビルドする
  • STEP3 : コンテナ上のPostgreSQLにログインする

また、この手順を進めるにあたり、今回はsqlpracticeというフォルダを作成しておきましょう。このフォルダを開いておきます。

さらにdataという名前のフォルダをsqlpractice配下に作成します。つまり、以下の構成になれば大丈夫です。

$ tree .
.
├── Dockerfile
├── data
└── docker-compose.yml

1 directory, 2 files

 

Dockerfileとdocker-compose.ymlは、これから一緒に作成していきましょう。

STEP1 : Dockerfileを作成する

まずはDockerfileの作成からです。

Dockerfileという名前をつけたファイルに、以下の内容をコピペしましょう。

FROM postgres:13-alpine
ENV LANG ja_JP.utf8

 

FROMではベースになるイメージを選択しています。

今回は「Docker HubにアップされているPostgraSQL 13のオフィシャルイメージを使っている」ということです。

もしバージョンを変えたかったら、Docker Hubから好きなイメージを選択してみてください。

参考 : Postgres – Official Image | Docker Hub

STEP2 : docker-compose.ymlを作成してコンテナをビルドする

次にdocker-compose.ymlを作成します。

docker-compose.ymlという名前をつけたファイルに、以下の内容をコピペしましょう。

version: '3'
services:
  db:
    build: .
    container_name: mypg
    volumes:
      - ./data:/var/lib/postgresql/data
    ports:
      - 5433:5432
    environment:
      POSTGRES_USER: admin
      POSTGRES_PASSWORD: admin
      POSTGRES_DB: test_db

 

これで、Dockerコンテナを作成するとき、PostgreSQLの初期設定も行われた状態になっています。

自分のPCにPostgreSQLをインストールするとき、画面をポチポチやるんですけど、それをコード化して自動でセットアップできるってわけです。

それでは、docker-compose.ymlを書いたら、ターミナルで以下のコマンドを実行しましょう。実行するときは、今回のプロジェクトファイルsqlpracticeにいることを確認してください。

$ docker-compose up -d 

 

これでDockerfileとdocker-compose.ymlを元に、Dockerコンテナを作成することができました。

ちなみに以下のコマンドを入力すると、コンテナが起動されていることが分かります。

$ docker-compose ps

 

STEP3 : コンテナ上のPostgreSQLにログインする

それでは最後に、作成したDockerコンテナ上で起動してるPostgreSQLにログインしていきましょう。

そのためには、以下のコマンドを実行します。

$ docker container exec -it mypg bash

 

これでいま作成したmypqというコンテナを操作できるようになります。

bashが起動しているはずなので、以下のpsqlコマンドを実行して、今回作成したデータベースtest_dbに入っていきましょう。

bash-5.1# psql -p 5432 -U admin -d test_db

 

あとはいつもどおりにSQLを使えます。試しにデータベース一覧を確認してみます。

test_db=# \l

 

そうすると、以下のようにデータベース一覧が表示されるはずです。

Docker PostgreSQL 作成手順

これでPostgreSQLの動作確認まで完了しました。

あとはSQLを練習するもよし、exitで適宜抜けていただくもよしです。

最後にDockerコンテナを終了するためには、以下のコマンドを実行します。

$ docker-compose stop

 

もしDockerコンテナを削除して、後片付けしたいなら以下のコマンドです。

$ docker-compose down

 

お疲れさまでした!

ABOUT ME
はやたす
たくさんPythonを紹介するYouTuberです(登録者1.94万人) | フリーランスで機械学習/分析案件も請けています(経験業界 : 金融, 情報通信, サービス) | 元プログラミングスクール講師