【PostgreSQLをインストール】Dockerを使って15分以内に作成する!

postgresql_install PostgreSQL
スポンサーリンク

PostgreSQLの勉強をするにあたって、「気軽に触ることができる環境が欲しい!」と思っている人向けの記事です。「とにかく時短で構築できる環境は何か?」でいくつか検討した結果、今回は、Dockerを使用しました。あくまで、PostgreSQLが触れる環境を早く作る!ってことが目標なので、Dockerの設定とかは覚えなくて大丈夫です(コピペでOK)。それではいってみましょう!


(宣伝)


スポンサーリンク

Dockerをインストールする。(5分)

1.以下のURLからDockerをダウンロードして、インストールする。

Get Started
Get started with Docker Desktop and join millions of developers in faster, more secure app development using containers ...

2.ターミナルを開いて、Dockerがインストールされたことを確認する。

$ [~] % docker -v
Docker version 20.10.7, build f0df350

PostgreSQL用のDockerイメージを作成する。(5分)

それではPostgreSQL用のDockerイメージを作成していきます。

1.適当な場所で作業用のディレクトリを作成する。

$ mkdir study-infra-postgresql
$ cd study-infra-postgresql

.Dockerfile.pgsqlを作成する。

「こう書くんだなー」ぐらいで深く考えずに!

FROM postgres:13.5

ENV POSTGRES_PASSWORD postgres

RUN apt-get update && \
    apt-get clean && \
    rm -fr /var/lib/apt/lists/*

3.docker-compose.ymlを作成する。

「こう書くんだなー」ぐらいで深く考えずに!

また、DBコンテナに割り当てるCPUを「1コア」、メモリを「2GB」にしています。

version: '3'
services:
  db:
    build:
      context: .
      dockerfile: Dockerfile.pgsql
    container_name: study-infra-postgresql
    volumes:
      - db:/var/lib/postgresql/data
    ports:
      - '25432:5432'
    deploy:
      resources:
        limits:
          cpus: '1.0'
          memory: 2G
volumes:
  db:
    driver: local

4.PostgreSQL用のDockerイメージを作成する。

$ docker-compose build
[+] Building 7.7s (6/6) FINISHED
 => [internal] load build definition from Dockerfile                                                                                             0.0s
 => => transferring dockerfile: 142B                                                                                                             0.0s
 => [internal] load .dockerignore                                                                                                                0.0s
 => => transferring context: 2B                                                                                                                  0.0s
 => [internal] load metadata for docker.io/library/postgres:13.5                                                                                 0.0s
 => CACHED [1/2] FROM docker.io/library/postgres:13.5                                                                                            0.0s
 => [2/2] RUN apt-get update &&     apt-get clean &&     rm -fr /var/lib/apt/lists/*                                                             7.5s
 => exporting to image                                                                                                                           0.0s
 => => exporting layers                                                                                                                          0.0s
 => => writing image sha256:7d243aa5b9754f9ef2542e4908a766ebecf5c44e7ea9a9066515c75cab5bc92f                                                     0.0s
 => => naming to docker.io/library/study-infra-postgresql:1.0.0                                                                                  0.0s

Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
$

(宣伝)


PostgreSQLに接続する!(5分)

1.PostgreSQL用のコンテナを起動する。

$ docker-compose up -d

オプションの解説も載せときます。(覚えなくてもOK!)

オプション解説
-dコンテナをバックグランドで起動します。

2.PostgreSQL用のコンテナに接続する。

まだDBに接続するわけではないので注意!

$ docker exec -u postgres -it study-infra-postgresql bash
postgres@93e2b0eb4044:/# ←こうなったらコンテナに接続できています。

3.PostgreSQLに接続する。

postgres@93e2b0eb4044:~$ psql
psql (13.5 (Debian 13.5-1.pgdg110+1))
Type "help" for help.

postgres=# ←こうなったらPostgreSQLに接続できています。

4.試しにDBを作成してみよう。

①データベースの確認。
postgres=# \l
Name    |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges
-----------+----------+----------+------------+------------+-----------------------
 postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 |
 template0 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
           |          |          |            |            | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
           |          |          |            |            | postgres=CTc/postgres
(3 rows)

②「study_infra」という名前のデータベースを作成。
postgres=# CREATE DATABASE study_infra;
CREATE DATABASE
postgres=#

③作成したデータベースの確認。
postgres=# \l
                                  List of databases
    Name     |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges
-------------+----------+----------+------------+------------+-----------------------
 postgres    | postgres | UTF8     | en_US.utf8 | en_US.utf8 |
 study_infra | postgres | UTF8     | en_US.utf8 | en_US.utf8 |
 template0   | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
             |          |          |            |            | postgres=CTc/postgres
 template1   | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
             |          |          |            |            | postgres=CTc/postgres
(4 rows)

postgres=#

その他よく使うコマンドの紹介

コンテナの起動停止

# 起動
$ docker-compose stop

# 停止
$ docker-compose start

コンテナを削除したい場合

$ docker-compose rm

以上で、PostgreSQLが素早く構築できました。

お疲れ様でした!


(宣伝)


プロフィール
この記事を書いた人
katsuya

SESからキャリアをスタートし、現在はフリーランスとして活動しています。フリーランスになってから6年で年収1,000万円を達成しました。「Study Infra」では、今までの経験やITインフラに関する情報を発信中です。

katsuyaをフォローする
PostgreSQL
スポンサーリンク
シェアする
katsuyaをフォローする

コメント

タイトルとURLをコピーしました