Docker ComposeとpgAdminを使用してDocker Postgresでユーザーとデータベースを作成する方法
Docker Postgresでスクリプトを使用してユーザーとデータベースを作成する方法
概要
前提条件
- Dockerがインストールされていること
- PostgreSQLの知識
手順
- スクリプトファイルの作成
以下の内容をcreate_user_database.sh
という名前のファイルに保存します。
#!/bin/bash
# PostgreSQLのユーザーとパスワード
POSTGRES_USER="my_user"
POSTGRES_PASSWORD="my_password"
# 作成するデータベースの名前
DATABASE_NAME="my_database"
# PostgreSQLコンテナに接続
docker exec -it postgres psql -U postgres
# ユーザーを作成
CREATE USER $POSTGRES_USER WITH PASSWORD '$POSTGRES_PASSWORD';
# データベースを作成
CREATE DATABASE $DATABASE_NAME OWNER $POSTGRES_USER;
# 接続を閉じる
\q
上記はサンプルスクリプトです。必要に応じて、ユーザー名、パスワード、データベース名などを変更してください。
- スクリプトの実行
以下のコマンドを実行して、スクリプトを実行します。
docker run --rm -it postgres create_user_database.sh
詳細
docker exec
コマンドは、コンテナ内に接続してコマンドを実行するために使用されます。psql
コマンドは、PostgreSQLデータベースに接続するために使用されます。CREATE USER
コマンドは、新しいユーザーを作成するために使用されます。
補足
- スクリプト内で環境変数を使用したい場合は、
.env
ファイルを作成して環境変数を定義し、docker run
コマンドを実行する際に-e
オプションで.env
ファイルを指定することができます。 - より複雑な操作を行う場合は、PostgreSQLの公式ドキュメントを参照してください。
#!/bin/bash
# PostgreSQLのユーザーとパスワード
POSTGRES_USER="my_user"
POSTGRES_PASSWORD="my_password"
# 作成するデータベースの名前
DATABASE_NAME="my_database"
# PostgreSQLコンテナに接続
docker exec -it postgres psql -U postgres
# ユーザーを作成
CREATE USER $POSTGRES_USER WITH PASSWORD '$POSTGRES_PASSWORD';
# データベースを作成
CREATE DATABASE $DATABASE_NAME OWNER $POSTGRES_USER;
# 接続を閉じる
\q
POSTGRES_USER
、POSTGRES_PASSWORD
、DATABASE_NAME
変数を定義します。docker exec
コマンドを使用して、PostgreSQLコンテナに接続します。
必要に応じて、このコードを編集して、独自の要件に合わせてカスタマイズすることができます。
コードの解説
#!/bin/bash
:この行は、このファイルがbashスクリプトであることを示します。#
:この記号は、その行がコメントであることを示します。POSTGRES_USER="my_user"
:この行は、POSTGRES_USER
変数をmy_user
という値に設定します。DATABASE_NAME="my_database"
:この行は、DATABASE_NAME
変数をmy_database
という値に設定します。docker exec -it postgres psql -U postgres
:この行は、docker exec
コマンドを使用して、PostgreSQLコンテナに接続します。-U postgres
:このオプションは、postgres
ユーザーとしてPostgreSQLデータベースに接続することを指定します。CREATE USER $POSTGRES_USER WITH PASSWORD '$POSTGRES_PASSWORD';
:この行は、CREATE USER
コマンドを使用して、新しいユーザーを作成します。$POSTGRES_USER
:この変数は、ユーザー名を表します。WITH PASSWORD '$POSTGRES_PASSWORD'
:このオプションは、ユーザーのパスワードを指定します。CREATE DATABASE $DATABASE_NAME OWNER $POSTGRES_USER;
:この行は、CREATE DATABASE
コマンドを使用して、新しいデータベースを作成します。$DATABASE_NAME
:この変数は、データベース名を表します。OWNER $POSTGRES_USER
:このオプションは、データベースの所有者をPOSTGRES_USER
ユーザーに設定することを指定します。
Docker Postgresでユーザーとデータベースを作成する他の方法
手動による作成
- Dockerコンテナを起動します。
docker run -it --rm postgres
psql -U postgres
CREATE USER my_user WITH PASSWORD 'my_password';
CREATE DATABASE my_database OWNER my_user;
- 接続を閉じます。
\q
Docker Composeを使用する
version: '3'
services:
postgres:
image: "postgres:latest"
ports:
- "5432:5432"
environment:
- POSTGRES_USER=my_user
- POSTGRES_PASSWORD=my_password
- POSTGRES_DB=my_database
volumes:
postgres_data:
このファイルは、以下の設定を行います。
postgres
という名前のサービスを定義します。postgres:latest
イメージを使用します。- ポート
5432
を公開します。
以下のコマンドを実行して、Docker Composeを起動します。
docker-compose up -d
このコマンドは、PostgreSQLコンテナを起動し、my_user
ユーザーとmy_database
データベースを作成します。
pgAdminを使用する
pgAdminは、PostgreSQLデータベースを管理するためのGUIツールです。pgAdminを使用して、ユーザーとデータベースを作成することができます。
- pgAdminをインストールします。
- 以下の手順で、ユーザーを作成します。
- "Databases"ノードを展開します。
- "postgres"データベースを右クリックします。
- "New" > "Role"を選択します。
- ユーザー名とパスワードを入力します。
- "Create"をクリックします。
- 以下の手順で、データベースを作成します。
- データベース名を入力します。
- "Owner"ドロップダウンリストから、作成したユーザーを選択します。
Docker Postgresでユーザーとデータベースを作成するには、いくつかの方法があります。
- 手動による作成
- Docker Composeを使用する
自分に合った方法を選択してください。
bash postgresql docker