IT技術で仕事を減らしたい!

ITエンジニアのメモ+α

Docker PostgreSQLの環境構築(その1)

どうも、nippa です。

テスト用の PostgreSQL 環境が必要になったのですが、VM で OS からインストールするのは時間がかかる、かつ

直接マシンにインストールすると後始末が面倒だということで、Docker を使うことにしました。

今回は Docker を利用して PostgreSQL サーバの環境を構築したいと思います。

環境

Docker のインストール

Docker のインストールは、公式サイトからインストーラーをダウンロードしてインストールします。

Docker 公式: Docker Desktop

詳しくはこちらの記事を確認ください。

Docker + PostgreSQL の構築

構築の流れは以下の通りです。

  1. PostgreSQL の Docker のイメージをダウンロード
  2. Dockerfile の作成

1. Docker のイメージをダウンロード

Docker のコアとなる image をダウンロードします。

docker image pull [image name]

#今回は ubuntu 20.04
docker image pull postgres:11-alpine

ダウンロードしたイメージの確認

docker image ls

# 結果
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
postgres                             11-alpine   283664b901ee   2 weeks ago    188MB

2. Dockerfile の作成

Dockerfile を作成します。

設定としては以下の通りです。

ここではファイル名はdockerfileとしています。

FROM postgres:11-alpine

# Time Zone
ENV TZ Asia/Tokyo

# Language
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8

3. Dockerfile からイメージ作成

Docker image をビルドします。

# イメージ名を指定して Docker imageのビルド
docker build -t [image name] .

# image名を postgres11-ja として作成
docker build -t postgres11-ja .

イメージが作成されていることを確認します。

docker images

REPOSITORY                           TAG       IMAGE ID       CREATED        SIZE
postgres11-ja                        latest    2fb039802ce9   2 weeks ago    188MB

postgres11-jaという名でイメージが作成されています。

4. 作成したイメージから container を起動

container nameimage nameを指定してコンテナを起動します。

起動時のオプションでパスワード、Listen ポートを指定します。

docker run --name postgres -e POSTGRES_PASSWORD=postgres -p 5432:5432 -d postgres

コンテナの起動を確認します。

docker ps

CONTAINER ID   IMAGE      COMMAND                  CREATED              STATUS              PORTS      NAMES
fb9bb88dab01   postgres   "docker-entrypoint.s…"   6 seconds ago   Up 4 seconds   0.0.0.0:5432->5432/tcp, :::5432->5432/tcp   postgres

上記の出力がされればコンテナ名:postgres で起動しています。

念の為、ポート状態を確認します。

lsof -i:5432

postgres がポート番号 5432 を利用していることを確認します。

5. PostegreSQL にアクセス

以下のコマンドで psql でデータベースにログインします。

psql -U postgres -d postgres -h localhost

実行するとパスワード起動時にPOSTGRES_PASSWORDで指定したパスワードでログインが可能となります。

感想

今回は docker で PostgreSQL のコンテナし、作成起動までを行いました。

VM で PosgreSQL を用意するよりはるかに簡単にサーバ環境を用意することができました。

次回は、docker-compose でもう少し便利な使い方をまとめたいと思います。

ではでは、また次回。

timesaving.hatenablog.com

timesaving.hatenablog.com