Edited at

DockerでPostgreSQL環境を構築する(更新: 2017/6/20)

More than 1 year has passed since last update.


はじめに :elephant:

PostgreSQLを使用した開発をするにあたり、


  • ローカルにインストールしたくない :elephant:

  • でも、Vagrantもいや :elephant:

  • どうせならDocker使おう :whale:

と思ったので、Dockerで開発環境を構築する手順をまとめました。

ザクザク行けば、10分でログインしてSQLを発行するところまでいけると思います。

※Docker自体のインストールはDockerをMacにインストールするをご覧ください。


PostgreSQLを起動する :rocket:

$docker run -d --name {コンテナ名} -e POSTGRES_PASSWORD={スーパユーザのパスワード} -p {コンテナへフォワードするホストのポート:フォワード先のコンテナのポート} postgres{:バージョン(指定しなければ最新)}

でイメージからコンテナを立ち上げることができます。

(ローカルにイメージがない場合はDocker Hubから取得してくれます。)

今回は

* コンテナ名にpostgres

* スーパユーザのパスワードに test

* ポートフォワードは 5432:5432(つまり、同じポート番号でホストとコンテナを繋ぐ)

* バージョンは指定せずに最新

としました。

$docker run -d --name postgres -e POSTGRES_PASSWORD=test -p 5432:5432 postgres

Unable to find image 'postgres:latest' locally
latest: Pulling from library/postgres
ef0380f84d05: Pull complete
50cf91dc1db8: Pull complete
d3add4cd115c: Pull complete
467830d8a616: Pull complete
089b9db7dc57: Pull complete
6fba0a36935c: Pull complete
81ef0e73c953: Pull complete
338a6c4894dc: Pull complete
15853f32f67c: Pull complete
044c83d92898: Pull complete
17301519f133: Pull complete
dcca70822752: Pull complete
cecf11b8ccf3: Pull complete
Digest: sha256:1364924c753d5ff7e2260cd34dc4ba05ebd40ee8193391220be0f9901d4e1651
Status: Downloaded newer image for postgres:latest
aeb38b69100e3c6956d682367d50c959e511084b6ef64467fc208e7feb536d6a

余談:バージョンを指定することもできます

上記の方法だと、最新版が入りますが、もちろんバージョンを指定することもできます。

例) 9.5系を指定する場合、末尾に :9.5と付けます。

(NAMESはお好きなもので大丈夫です。今回は postgres95と指定しました。)

$docker run -d --name postgres95 -e POSTGRES_PASSWORD=test -p 5432:5432 postgres:9.5

これだけです。簡単!


起動を確認する :eyeglasses:

docker container lsで立ち上がっているか確認する。

$docker container ls

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
aeb38b69100e postgres "docker-entrypoint..." 4 days ago Up 4 minutes 0.0.0.0:5432->5432/tcp postgres

いい感じ!


ログインする :computer:

$docker exec -ti {NAMES} bash

でDockerコンテナにログインできます。

今回だとNAMESにはpostgresを指定していました。それでは、早速入ってみましょう。

$docker exec -ti postgres bash # ログイン

root@aeb38b69100e:/# psql --version # バージョンを確認
psql (PostgreSQL) 9.6.3
root@aeb38b69100e:/# psql -U postgres # スーパーユーザでPostgreSQLにログイン
psql (9.6.3)
Type "help" for help.

postgres=# create database test; # 試しにデータベース `test`を作成
CREATE DATABASE


おわりに

いかがでしたでしょうか。DockerはVagrantと比べてサクっと立ち上げられるところが利点ですね。

次はDockerで立ち上げたサーバ同士で通信するところまで行ってみようと思います。