こんにちは、おくやんです。
このブログでは、開発に役立つノウハウを実践的なコード例と共に紹介しています。
だけど、構築方法がわからない。。。
今回は、このようなお悩みを解決します。
本記事の内容
今回はDocker上でPostgreSQLを利用するための環境構築手順についてまとめました。
PostgreSQLはフリーのオープンソースRDBMSであり、非常に人気もあります。Dockerを利用すると環境構築が非常に簡単なので、本記事を参考に構築してみてください。
Docker+PostgreSQL環境の構築手順を解説
Dockerを利用したPostgreSQL環境の構築を行っていきます。構築手順はこちらです。
環境構築手順
2. 環境変数設定ファイルの作成
3. データを永続化させる設定の追加
今回は下記の環境で構築を行います。
システム環境
OS | Windows 10 |
Docker for Windows | 4.19.0 |
Docker | 23.0.5 |
Docker Compose | v2.17.3 |
Docker Image | postgres:15.3-alpine3.18 |
それでは早速、docker-compose.ymlの作成を行っていきましょう。
docker-compose.ymlの作成
docker-compose.ymlを作成していきましょう。作業フォルダに移動後、下記内容のファイルを作成します。
docker-compose.yml
version: '3.8'
services:
db:
image: postgres:15.3-alpine3.18
environment:
- TZ=Asia/Tokyo
ports:
- 15432:5432
env_file:
- .env-dev
docker-compose.ymlの書き方に関しては下記記事で詳しく解説しています。
>> 【初心者向け】docker-compose.ymlの書き方を調べてみた
今回はPostgreSQL環境を構築する上でのポイントを解説していきます。
Dockerイメージの指定
image: postgres:15.3-alpine3.18
今回はPostgreSQL 15.3のイメージを指定しています。
ほかのバージョンも指定可能ですので、Docker Hubから探してみてください。
Docker Hubに上がっているイメージを利用することで、構築の手間を大幅に削減できます。
環境変数設定ファイルの指定
env_file:
- .env-dev
外部の環境変数設定ファイルを読み込みます。
environmentを利用して定義することもできますが、ユーザやパスワードなど環境別に定義が必要なものは別ファイルとすると都合が良いです。
続いては環境変数設定ファイルの作成を行いましょう。
環境変数設定ファイルの作成
環境設定ファイルの作成を行います。今回はPostgreSQLのDockerイメージに必要な3つの環境変数を定義します。
docker-compose.ymlを作成したフォルダと同階層にファイルを作成しましょう。
.env-dev
POSTGRES_PASSWORD=postgrespassword
POSTGRES_USER=postgres
POSTGRES_DB=app_development
設定された値に合わせてDBの環境設定が行われます。各自の環境に合わせて設定値を変更してください。
POSTGRES_PASSWORD
POSTGRES_PASSWORD=postgrespassword
POSTGRES_PASSWORDはスーパーユーザのパスワードを設定します。
本項目は設定が必須です。
設定例では、パスワードがpostgrespasswordとなります。
POSTGRES_USER
POSTGRES_USER=postgres
POSTGRES_USERはスーパーユーザのユーザ名を設定します。
本項目は省略が可能です。
省略した場合のスーパーユーザ名が「postgres」となります。
POSTGRES_DB
POSTGRES_DB=app_development
POSTGRES_DBはDataBase名を設定します。
本項目は省略が可能です。
省略した場合のDataBase名はPOSTGRES_USERの値が使用されます。
設定例の場合、DBには下記の設定で接続可能です。
これで起動に必要な準備ができました。
次にデータを永続化させる設定をしていきましょう。
データを永続化させる設定を追加
ここまでの設定でもコンテナを立ち上げDBにアクセスすることができますが、今のままではdocker-compose downを実行するたびにデータが消えてしまいます。
本番運用を考えるとデータの永続化は必須です。
今回は名前付きボリュームを利用したデータの永続化を行っていきましょう。
名前付きボリュームの設定を追加
docker-compose.ymlにvolumesの設定を追加します。
docker-compose.yml
version: '3.8'
services:
db:
image: postgres:15.3-alpine3.18
environment:
- TZ=Asia/Tokyo
ports:
- 15432:5432
env_file:
- .env
volumes: # 名前付きボリュームの割り当て定義を追加
- db-data:/var/lib/postgresql/data
# 名前付きボリュームの定義を追加
volumes:
db-data:
driver: local
データを永続化させるため2カ所設定を追加しました。
追加箇所
2. 名前付きボリュームの定義
1. 名前付きボリュームの割り当て定義
volumes: # 名前付きボリュームの割り当て定義を追加
- db-data:/var/lib/postgresql/data
名前付きボリュームをコンテナ上のフォルダに割り当てます。
PostgreSQLのDockerイメージではコンテナ上の/var/lib/postgresql/data配下にDBファイルを格納します。名前付きボリュームを割り当てることで、停止後もデータを残すことができます。
今回はdb-dataという名前のボリュームを割り当ています。
2. 名前付きボリュームの定義
# 名前付きボリュームの定義を追加
volumes:
db-data:
driver: local
名前付きボリュームの作成定義に関する記述です。db-dataという名前のボリュームを作成しています。
これで データを永続化が完了です。
まとめ:Dockerを利用してPostgreSQL環境を構築しよう
本記事ではDocker上でPostgreSQL環境を構築する手順について解説しました。
環境構築は下記3つの手順となります。
Docker + PostgreSQL環境構築手順
2. 環境変数設定ファイルの作成
3. データを永続化させる設定の追加
上記の手順通りに進めていけば、誰でも簡単にDBの構築が行えます。
Webアプリケーションを構築する上でDBは不可欠なものとなりますので、本記事を通して構築の仕方をぜひ覚えてください。
最後まで読んでいただき、ありがとうございます。