こんにちは、はやたす(@hayatasuuu )です。
この記事ではDockerでPostgreSQLの実行環境を作成する方法を紹介します。
DockerでPostgreSQLの環境を準備できると、自分のPCを汚さずにSQLを練習できます。
使わなくなったらコンテナを削除するだけ。
PostgreSQLのアンインストールすら考える必要ないです。
さっそくDockerコンテナを使って、
PostgreSQLの実行環境を作成していきましょう。
DockerでPostgreSQLの実行環境(コンテナ)を作成する方法
DockerでPostgreSQLの実行環境を準備するには、以下の3ステップが必要になります。
- STEP1 : Dockerfileを準備する
- STEP2 : docker-compose.ymlを作成してコンテナをビルドする
- STEP3 : コンテナ上のPostgreSQLにログインする
また、この手順を進めるにあたり、今回はsqlpractice
というフォルダを作成しておきましょう。
$ mkdir sqlpractice
このフォルダを開いておきます。
さらにdata
という名前のフォルダをsqlpractice
配下に作成します。つまり、以下の構成になれば大丈夫です。
$ tree .
# .
# ├── Dockerfile
# ├── data
# └── docker-compose.yml
#
# 1 directory, 2 files
Dockerfileとdocker-compose.ymlは、これから一緒に作成していきましょう。
STEP1 : Dockerfileを作成する
まずはDockerfileの作成からです。
Dockerfileという名前をつけたファイルに、以下の内容をコピペしましょう。
FROM postgres:13-alpine
ENV LANG ja_JP.utf8
FROM
ではベースになるイメージを選択しています。
今回は「Docker HubにアップされているPostgraSQL 13のオフィシャルイメージを使っている」ということです。
もしバージョンを変えたかったら、Docker Hubから好きなイメージを選択してみてください。
参考 : Postgres – Official Image | Docker Hub
STEP2 : docker-compose.ymlを作成してコンテナをビルドする
次にdocker-compose.ymlを作成します。
docker-compose.ymlという名前をつけたファイルに、以下の内容をコピペしましょう。
version: '3'
services:
db:
build: .
container_name: mypg
volumes:
- ./data:/var/lib/postgresql/data
ports:
- 5433:5432
environment:
POSTGRES_USER: admin
POSTGRES_PASSWORD: admin
POSTGRES_DB: test_db
これで、Dockerコンテナを作成するとき、PostgreSQLの初期設定も行われた状態になっています。
自分のPCにPostgreSQLをインストールするとき、画面をポチポチやるんですけど、それをコード化して自動でセットアップできるってわけです。
それでは、docker-compose.ymlを書いたら、ターミナルで以下のコマンドを実行しましょう。実行するときは、今回のプロジェクトファイルsqlpractice
にいることを確認してください。
$ docker-compose up -d
これでDockerfileとdocker-compose.ymlを元に、Dockerコンテナを作成することができました。
ちなみに以下のコマンドを入力すると、コンテナが起動されていることが分かります。
$ docker-compose ps
STEP3 : コンテナ上のPostgreSQLにログインする
それでは最後に、作成したDockerコンテナ上で起動してるPostgreSQLにログインしていきましょう。
そのためには、以下のコマンドを実行します。
$ docker container exec -it mypg bash
これで、いま作成したmypqというコンテナを操作できるようになります。
bashが起動しているはずなので、以下のpsql
コマンドを実行して作成したデータベースtest_db
に入っていきましょう。
bash-5.1# psql -p 5432 -U admin -d test_db
あとはいつもどおりにSQLを使えます。試しにデータベース一覧を確認してみます。
test_db=# \l
そうすると、以下のようにデータベース一覧が表示されるはずです。
これでPostgreSQLの動作確認まで完了しました。
あとはSQLを練習するもよし、exit
で適宜抜けていただくもよしです。
最後にDockerコンテナを終了するためには、以下のコマンドを実行します。
$ docker-compose stop
もしDockerコンテナを削除して、後片付けしたいなら以下のコマンドです。
$ docker-compose down
お疲れさまでした!