Docker For WindowsでDB環境やサーバー環境を構築するのに便利なdocker-composeコマンドについて、分かりやすく解説していこうと思います。
WSL2経由でDocker For Windowsをインストールする手順については下記URLで解説しているので、気になる方はご確認ください。
[blogcard url="https://iteng-pom.com/archives/1017"]目次
広告
はじめに
docker-composeコマンドを使えば、DB環境やサーバー環境を何度でも作り直すことができます。
その時に用意しないといけないのが、「docker-compose.yml」ファイルです。
dockerのコマンドを逐一実行していくことで、DB環境やサーバー環境を作ることができるのですが、それらのコマンドを一括で実行できるように便利にしたものがdocker-composeコマンドです。
docker-composeコマンドを実行するための手順は、下記の通りとなります。
- フォルダ構成の決定と作成
- docker-compose.ymlファイルの作成
- 「docker-compose up -d」コマンドの実行
フォルダ構成の決定と作成
今回インストールするのはPostgresの13.3とpgAdmin4の5.1です。
コンテナごとにフォルダに分けたいので、それぞれpostgresとpgadminフォルダに分けます。
postgresフォルダには、さらにデータの永続化を行うdataフォルダと初回起動に実行されるsqlを配置するinitフォルダを作成します。
pgadminフォルダには、このフォルダ内がそのままデータの永続化に使われます。
postgreフォルダとpgadminフォルダと同階層にdocker-compose.ymlファイルを配置します。
フォルダ構成は下記の通りとなります。
.
├─pgadmin
├─postgres
│ ├─data
│ └─init
└─docker-compose.yml
永続化とは
永続化とはパソコンの電源を切ってもデータが保存されているということです。
Docker のデータは Docker を停止すると保存されていたデータはすべて削除されてしまいますが、永続化して保存したいデータをローカルに退避(正確にはローカルフォルダと Docker サービス内のフォルダ同士が同期されます)しておけば、Docker を再起動してもデータは保存されたまま残っています。
docker-compose.ymlファイルの作成
ymlファイルは半角スペース2文字で段落を表し、1行+改行で意味のあるコードになります。
また、ymlファイル内にタブ(\t)を使うと実行する時にエラーになります。
「postgres:」の見出しが付いている段落がPostgresコンテナに関する記述、「pgadmin4:」の見出しが付いている段落がpgAdmi4コンテナに関する記述です。
それぞれの見出しの意味は下記の通りとなっています。
image | どのコンテナイメージを使うか |
container_name | コンテナの名前 |
volumes | どのローカルフォルダとコンテナを紐づけるか (永続化もここで行っています。) |
environment | 環境設定 |
hostname | ホストの名前 |
restart | コンテナが停止した際に再起動を行うか |
version: '3'
services:
postgresql:
image: postgres:13.2
container_name: postgresql
ports:
- 5432:5432
volumes:
- ./postgres/data:/var/lib/postgresql/data
- ./postgres/init:/docker-entrypoint-initdb.d
environment:
POSTGRES_USER: root
POSTGRES_PASSWORD: root
POSTGRES_DB: testdb
POSTGRES_INITDB_ARGS: "--encoding=UTF-8"
hostname: postgres
restart: always
user: root
pgadmin4:
image: dpage/pgadmin4:5.1
container_name: pgadmin4
ports:
- 80:80
volumes:
- ./pgadmin:/var/lib/pgadmin
environment:
PGADMIN_DEFAULT_EMAIL: root
PGADMIN_DEFAULT_PASSWORD: root
PGADMIN_DEFAULT_EMAIL: admin@abcde.com
hostname: pgadmin4
restart: always
「docker-compose up -d」コマンドの実行
PowerShellでdocker-compose.ymlファイルが配置されたフォルダに移動して、下記コマンドを実行します。
docker-compose up -d
pgAdmin4でログインしてみる
- ブラウザで「http://localhost/」にアクセスします。

- docker-compose.ymlファイルで設定したメールアドレスとパスワードを入力し、Loginボタンを押下します。

- ログインできました。

ERROR: column rel.relhasoids does not exist
LINE 1: SELECT rel.relhasoids AS has_oids
まとめ
docker-composeコマンドでDB環境を構築する手順を見てきました。
他の例えばMySQL用コンテナに変えたいといったような場合も起動するコンテナを切り替えるだけで、DB環境を入れ替えることができます。
何と言ってもDocker環境はホスト端末を選ばずに再現できるので本当に便利ですよね!
最後までお読み頂きありがとうございました。
コメントを残す