LoginSignup
61
48

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-06-20

はじめに :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で立ち上げたサーバ同士で通信するところまで行ってみようと思います。

61
48
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
61
48