Traffine I/O

日本語

2023-04-07

Dockerを使用したPostgreSQL環境の構築

Dockerを使用したPostgreSQL環境の構築

この記事では、Dockerを使用してPostgreSQL環境を作成する手順を説明します。PostgreSQLはもっとも人気のあるオープンソースのリレーショナルデータベース管理システムの一つです。Dockerを使用することで、ホストOS上にPostgreSQLサーバーを手動でインストールや設定する手間を省き、開発やテストの目的で素早くPostgreSQLサーバーをセットアップすることができます。

docker-compose.ymlの設定

まず、PostgreSQLサーバーコンテナを作成するために、docker-compose.ymlファイルを作成します。このファイルには、Docker HubからPostgreSQLイメージを取得し、新しいPostgreSQLコンテナを作成し、必要な環境変数を設定するための必要な構成が含まれます。

以下がdocker-compose.ymlファイルの例です。

docker-compose.yml
version: '3'

services:
  db:
    image: postgres:14
    container_name: postgres
    ports:
      - 5432:5432
    volumes:
      - db-store:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=passw0rd
volumes:
  db-store:

PostgreSQLコンテナの起動

docker-compose.ymlファイルが設定されたら、PostgreSQLサーバーコンテナを起動できます。Docker Composeを使用すると、たった1つのコマンドでアプリケーションのサービスを管理することができます。ターミナルで、docker-compose.ymlファイルがあるディレクトリに移動し、次のコマンドを実行します。

bash
$ docker compose up -d

PostgreSQLサーバーコンテナが起動していることを確認するために、docker psコマンドを使用することができます。このコマンドは実行中のDockerコンテナを全てリストします。以下はコマンドと期待される出力です。

bash
$ docker ps

CONTAINER ID   IMAGE         COMMAND                  CREATED         STATUS         PORTS                    NAMES
da5beb67905a   postgres:14   "docker-entrypoint.s…"   9 minutes ago   Up 9 minutes   0.0.0.0:5432->5432/tcp   postgres

PostgreSQLコンテナが実行されていることを確認したら、docker execコマンドを使用してPostgreSQLコンテナのシェルにアクセスすることができます。

bash
$ docker exec -it postgres /bin/sh

#

PostgreSQLコンテナの中に入ったので、PostgreSQLサーバーに接続するためにPostgreSQLクライアントCLIを使用できます。rootユーザーとして接続するには、以下のコマンドを使用します。

bash
# psql -h localhost -U postgres

psql (14.8 (Debian 14.8-1.pgdg120+1))
Type "help" for help.
postgres=#

PostgreSQLの操作

PostgreSQLサーバーに接続したら、テーブルの作成、データの挿入、データのクエリなど、さまざまなデータベース操作を行うことができます。以下は、テーブルの作成、データの挿入、そしてデータの取得の例です。

bash
postgres=# create table test(id int, name varchar(10));

CREATE TABLE
bash
postgres=# insert into test(id, name) values (1,'john');

INSERT 0 1
bash
postgres=# select * from test;

 id | name
----+------
  1 | john
(1 row)

クリーンアップ

操作が終了したら、PostgreSQLの接続を終了します。

bash
postgres=# exit

#

このコマンドにより、PostgreSQLサーバーからログアウトします。

PostgreSQLの接続を終了した後、Dockerコンテナのシェルに戻ります。exitでDockerコンテナを終了させます。

bash
# exit

不要なリソースを消費しないようにするために、使用が終わったらDockerコンテナを停止し、削除した方が良いです。以下のコマンドを使用してDockerコンテナを停止し、削除します。

bash
$ docker compose down

[+] Running 2/2
 ⠿ Container postgres         Removed                    2.8s
 ⠿ Network my_proj_default    Removed

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!